为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

茅侃侃 2022-07-15 09:35:23
我的返回值为“SomeCode SomeAddressHere SecondAddressHere, SomeCityHere, SomeCountryHere”想获得SomeCityHere,我目前的正则表达式是这个var str2 = "SomeCodeHere Los Angeles City, California, USA";var str2 = str2.match(/(?<= )([^,]+)/)[0];console.log(str2);我想返回加利福尼亚,但我似乎无法得到它。任何人都知道任何解决方法?
查看完整描述

3 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

如果它不必是正则表达式:

var str2 = str2.split(",")[1].trim();

或者

var str2 = str2.split(", ")[1];


查看完整回答
反对 回复 2022-07-15
?
慕容3067478

TA贡献1773条经验 获得超3个赞

您的正则表达式与您需要的不匹配,因为

  • (?<= )匹配空格后的位置,然后

  • ([^,]+)将逗号以外的任何一个或多个字符捕获到第 1 组中。

在类似 的字符串SomeCodeHere Los Angeles City, California, USA中,匹配出现在第一个空格之后并上升到第一个逗号,即Los Angeles City.

似乎您可以使用非正则表达式解决方案,例如user984003 建议,但如果您的SomeCodeHere orSomeAddressHere或或SecondAddressHere也可能包含逗号,您可以考虑获取最后两个逗号之间的值:

/[^\s,][^,]*(?=,[^,]*$)/

请参阅正则表达式演示

细节

  • [^\s,]- 除空格和逗号以外的字符

  • [^,]*- 除逗号外的 0+ 个字符

  • (?=,[^,]*$)- 一个正向前瞻,需要一个逗号,然后是除逗号 ( [^,]*) 之外的 0+ 个字符,直到字符串 ( $) 的末尾。

JS 演示:

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

var match = str2.match(/[^\s,][^,]*(?=,[^,]*$)/);

if (match) console.log(match[0]);


查看完整回答
反对 回复 2022-07-15
?
噜噜哒

TA贡献1784条经验 获得超7个赞

你可以试试这个。


这与你的有点不同,我同时使用了向前看和向后看


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

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

console.log(str2) // California


查看完整回答
反对 回复 2022-07-15
  • 3 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信