JavaScript中的基本正则表达式
一段时间以来,我一直试图在JavaScript中理解正则表达式,但它非常复杂。您可以告诉我如何使用正则表达式分别从以下URL中单独兑换每个值?JavaScript中的基本正则表达式
URL
/first/middle/last
返回
var first = "first"
var middle = "middle"
var last = "last"
谢谢!
我认为你应该使用split()
对于这种事情,但如果你真的喜欢使用regexp
你可以这样做:
var url = "/first/middle/last";
var reg = /\/(.*)\/(.*)\/(.*)/;
var matches = reg.exec(url);
// matches[0] == first
// matches[1] == middle
// matches[2] == last
我不知道这是否回答你的问题,但你要达到什么是最好的分裂做:
var parts = "/first/middle/last".split("/");
var first = split[1];
var middle = split[2];
var last = split[3];
注意,指数将在0
开始,但将包含任何东西之前第一次出现的拆分字符串。在你的例子中,这只是一个空字符串,因为字符串以斜杠开始。
只使用分裂()
var mystring = "/first/middle/last"
var mysplitstring = mystring.split("/");
var first = mysplitstring[1];
var middle = mysplitstring[2];
var last = mysplitstring[3];
在这里你去试试这个:
var string = "/first/middle/last";
var pattern = /([^\/]+)/g;
var result = string.match(pattern);
for (var i = 0; i < result.length; ++i) {
var value = result[i];
alert(value);
}
你也可以看看这个demo
这当然是更容易使用字符串分裂法做的,但这里有学习目的的正则表达式做的一种方式:
var url = '/first/middle/last';
var regex = /^\/(.+)\/(.+)\/(.+)$/;
regex.exec(url); // ["/first/middle/last", "first", "middle", "last"]
,并帮助您了解这个正则表达式(和一般的希望正则表达式),让我们仔细看看它。
第一和最后一个斜杠(/
)标记RegExp对象(不包括改性剂,你也许可以做到没有现在)的开头和结尾,就像"
和'
标记字符串的开头和结尾。
^
字符在开头意味着“字符串的开始”,所以它意味着匹配这个正则表达式必须在字符串的开头。
$
最后的字符表示“字符串的结尾”,所以匹配必须结束到字符串的末尾。这与开头的^
字符结合意味着比赛必须覆盖整个字符串。
正则表达式的其余部分是\/(.+)
部分的三次。前两个字符(\/
)只是匹配一个斜杠。我们不能直接匹配/
的斜杠,因为那样会结束正则表达式,所以我们使用反斜杠将其转义。 .+
部分匹配除换行符(.
)以外的任何字符一次或多次(+
)。该部分周围的圆括号称为捕获圆括号,并记住它们捕获的字符串,换句话说,它们使"first"
,"middle"
和"last"
出现在结果数组中。因此整个正则表达式匹配“字符串开始,斜线,一个或多个字符(记住这些),斜线,一个或多个字符(记住这些),斜杠,一个或多个字符(记住这些),字符串的结尾”。
您可以在例如MDN's RegExp documentation的正则表达式中找到有关特殊字符(点,加号,括号,反斜杠等)的更多信息。