JavaScript中的基本正则表达式

时间:2011-12-01 19:44:34

标签: javascript regex

有一段时间我一直试图理解JavaScript中的正则表达式,但它非常复杂。您可以告诉我如何使用正则表达式从下面的URL中单独兑换每个值?

网址

/first/middle/last

返回

var first = "first"
var middle = "middle"
var last = "last"

谢谢!

6 个答案:

答案 0 :(得分:3)

使用字符串的拆分方法肯定更容易,但是这是使用正则表达式进行学习的一种方法:

var url = '/first/middle/last';
var regex = /^\/(.+)\/(.+)\/(.+)$/;
regex.exec(url); // ["/first/middle/last", "first", "middle", "last"]

为了帮助您理解这个正则表达式(并且希望一般都是正则表达式),让我们更详细地看一下它。

第一个和最后一个斜杠(/)标记RegExp对象的开头和结尾(不包括现在可能没有的修饰符),就像"和{{1标记字符串的开头和结尾。

开头的'字符表示“字符串的开头”,因此这意味着此正则表达式的匹配必须位于字符串的开头。

末尾的^字符表示“字符串结束”,因此匹配必须结束字符串的结尾。这与开头的$字符相结合意味着匹配必须覆盖整个字符串。

正则表达式的其余部分是^部分三次。前两个字符(\/(.+))只是匹配斜杠。我们无法直接将斜杠与\/匹配,因为这将结束正则表达式,因此我们使用反斜杠将其转义。 /部分匹配除换行符(.+)之外的任何字符一次或多次(.)。该部分周围的括号称为捕获括号,并记住它们捕获的字符串,换句话说,它们会在结果数组中出现+"first""middle"

所以整个正则表达式匹配“字符串的开头,斜杠,一个或多个字符(记住这些),斜杠,一个或多个字符(记住这些),斜杠,一个或多个字符(记住这些),字符串的结尾”

您可以在例如MDN's RegExp documentation的正则表达式中找到有关特殊字符(点,加号,括号,反斜杠等)的更多信息。

答案 1 :(得分:1)

我不知道这是否能回答你的问题,但是你想要实现的目标最好是通过拆分完成:

var parts = "/first/middle/last".split("/");

var first = split[1];
var middle = split[2];
var last = split[3];

请注意,索引将从0开始,但在第一次出现拆分字符串之前将包含任何内容。在您的示例中,这只是一个空字符串,因为字符串以斜杠开头。

答案 2 :(得分:1)

只需使用split()

var mystring = "/first/middle/last"

var mysplitstring = mystring.split("/");

var first = mysplitstring[1];
var middle = mysplitstring[2];
var last = mysplitstring[3];

答案 3 :(得分:1)

我认为你应该使用split()来做这类事情,但如果你真的想使用regexp,你可以这样做:

 var url = "/first/middle/last";
 var reg = /\/(.*)\/(.*)\/(.*)/;
 var matches = reg.exec(url); 
 // matches[0] == first
 // matches[1] == middle
 // matches[2] == last

答案 4 :(得分:1)

在这里,试试这个:

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

答案 5 :(得分:1)

这不会回答您的问题,但您可以使用this非常棒的工具来生成和测试正则表达式。当我需要使用regEx时它总是派上用场。