正则表达式 - 匹配没有尾随字符

时间:2013-12-31 04:04:39

标签: javascript regex

我试图匹配以下内容(这些都是单独的字符串):

'Los Angeles, CA'
'New York, NY'
'Williamsburg, Brooklyn, NY'

来自以下字符串:

'Los Angeles, CA 90001, USA'
'New York, NY 10017, USA'
'Williamsburg, Brooklyn, NY, USA'

我正在使用JavaScript。到目前为止,我有:

var re = /.+[A-Z]{2}( |,)/,
    location = '',  // Address string here
    substring = location.match(re)[0];  // Returns something like Williamsburg, Brooklyn, NY,

虽然这个正则表达式将匹配上面的字符串示例,但我留下了一个尾随空格或逗号,具体取决于字符串。我可以slice()尾随字符,但我很好奇是否可以在正则表达式内完成。这可能吗?

3 个答案:

答案 0 :(得分:3)

您可以使用Positive Lookahead代替与空格字符或逗号匹配的捕获组( ),而不会将其中任何一个作为匹配项的一部分。

var re = /.+[A-Z]{2}(?= |,)/

请参阅Live demo

答案 1 :(得分:0)

另一种方法是使用单词boundary .+\b[A-Z]{2}\b

答案 2 :(得分:0)

替代方式:

substring = location.split(/([A-Z]{2})/, 2).join('');
substring = location.slice(0, location.search(/[A-Z]{2}/) + 2);