正则表达式获取字符串JS之间的单词

我的返回值为“SomeCode SomeAddressHere SecondAddressHere, SomeCityHere, SomeCountryHere”


想获得SomeCityHere,我目前的正则表达式是这个


var str2 = "SomeCodeHere Los Angeles City, California, USA";

var str2 = str2.match(/(?<= )([^,]+)/)[0];

console.log(str2);

我想返回加利福尼亚,但我似乎无法得到它。


任何人都知道任何解决方法?


茅侃侃
浏览 112回答 3
3回答

慕田峪7331174

如果它不必是正则表达式:var&nbsp;str2&nbsp;=&nbsp;str2.split(",")[1].trim();或者var&nbsp;str2&nbsp;=&nbsp;str2.split(",&nbsp;")[1];

慕容3067478

您的正则表达式与您需要的不匹配,因为(?<= )匹配空格后的位置,然后([^,]+)将逗号以外的任何一个或多个字符捕获到第 1 组中。在类似 的字符串SomeCodeHere Los Angeles City, California, USA中,匹配出现在第一个空格之后并上升到第一个逗号,即Los Angeles City.似乎您可以使用非正则表达式解决方案,例如user984003 建议,但如果您的SomeCodeHere&nbsp;orSomeAddressHere或或SecondAddressHere也可能包含逗号,您可以考虑获取最后两个逗号之间的值:/[^\s,][^,]*(?=,[^,]*$)/请参阅正则表达式演示。细节[^\s,]- 除空格和逗号以外的字符[^,]*- 除逗号外的 0+ 个字符(?=,[^,]*$)- 一个正向前瞻,需要一个逗号,然后是除逗号 (&nbsp;[^,]*) 之外的 0+ 个字符,直到字符串 (&nbsp;$) 的末尾。JS 演示:var str2 = "SomeCodeHere Los Angeles City, California, USA";var match = str2.match(/[^\s,][^,]*(?=,[^,]*$)/);if (match) console.log(match[0]);

噜噜哒

你可以试试这个。这与你的有点不同,我同时使用了向前看和向后看var str2 = "SomeCodeHere Los Angeles City, California, USA";var str2 = str2.match(/(?<=, ).+(?=,)/)[0]console.log(str2) // California
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript