正则表达式——匹配不含结尾字符的内容

4

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

'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个回答

3
你可以使用正向前瞻而不是捕获组( ),它匹配空格或逗号而不会将它们作为匹配的一部分。更多信息请参考正向前瞻
var re = /.+[A-Z]{2}(?= |,)/

请查看实时演示


1

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


0

另一种方法:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接