javascript正则表达式示例 - 提取直到字符出现?

时间:2012-06-18 15:49:55

标签: javascript regex

我有这样的文字。

Mr John Smith , Mr James Smith                  +(21)-(21)-12345678, 12345678, 12345678                     +(21)-12345678, 12345678, 12345678        SomeTextHereAlso        +(21)-(22)-12345678                       www.somewebaddress.co.uk                            Some Title, Some Place , Some Town,Some Suburb,  City - 100000

我想在javascript中使用正则表达式提取每个字符串。我找到了一些例子,今天早上他们工作了。现在我不知道他们为什么不再工作了。

提取

Mr John Smith , Mr James Smith

我用过这个。

/\S(.*)\+/  and /\S(.*?)\+/

这不起作用。我无法弄清楚原因。

提取此

+(21)-(21)-12345678, 12345678, 12345678                     +(21)-12345678, 12345678, 12345678        SomeTextHereAlso        +(21)-(22)-12345678     

我用过这个。

/\+(.*)(?=www.)/

这确实有效。

对于我使用的网址

/www(.*?)(?=\s\s)/

这也有效。

唯一的问题是第一个应该提取所有字符直到第一个+的例子,但它会提取所有字符,直到最后一个+。

我检查了http://gskinner.com/RegExr/?2tr5t,我在这里展示的例子很有用。是否有更多类似的例子可以帮助我,因为我查看代码并没有发现任何错误。

如果正则表达式没问题,那么如何使用此示例中的IndexOf()方法来提取我想要的内容?

3 个答案:

答案 0 :(得分:1)

我用This solution帮助我解决问题。所以我的项目将是RegEx和IndexOf()方法的组合。

我不知道为什么RegEx在这件事上失败了。谢谢大家。

答案 1 :(得分:0)

嗯,对于第一个例子,你可以使用一个否定的字符类来禁止内部循环匹配“+”字符。

/\S([^+]*)\+/

至于提取匹配,一个常见的模式正在做类似

的事情
var myPattern = /someregex/g;
var match;
while( (match=myPattern.exec(theString)) !== null ){
    console.log('the total match', match[0]);
    console.log('the first grouped parenthesis', match[1]);
    //and so on
}

例如,运行

var regex = /a(\d+)/g;
var str = ' a100 b200 a300';
var match;
while( (match=regex.exec(str)) !== null ){
    console.log(match)
}

打印

["a100", "100"]
["a300", "300"]

如果您有任何疑问,我高度推荐文件MDN

答案 2 :(得分:0)

您可以尝试[^+]+或更具体地^[^+]+