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

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

这当然是更容易使用字符串分裂法做的,但这里有学习目的的正则表达式做的一种方式:

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

,并帮助您了解这个正则表达式(和一般的希望正则表达式),让我们仔细看看它。

第一和最后一个斜杠(/)标记RegExp对象(不包括改性剂,你也许可以做到没有现在)的开头和结尾,就像"'标记字符串的开头和结尾。

^字符在开头意味着“字符串的开始”,所以它意味着匹配这个正则表达式必须在字符串的开头。

$最后的字符表示“字符串的结尾”,所以匹配必须结束到字符串的末尾。这与开头的^字符结合意味着比赛必须覆盖整个字符串。

正则表达式的其余部分是\/(.+)部分的三次。前两个字符(\/)只是匹配一个斜杠。我们不能直接匹配/的斜杠,因为那样会结束正则表达式,所以我们使用反斜杠将其转义。 .+部分匹配除换行符(.)以外的任何字符一次或多次(+)。该部分周围的圆括号称为捕获圆括号,并记住它们捕获的字符串,换句话说,它们使"first","middle""last"出现在结果数组中。因此整个正则表达式匹配“字符串开始,斜线,一个或多个字符(记住这些),斜线,一个或多个字符(记住这些),斜杠,一个或多个字符(记住这些),字符串的结尾”。

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