Javascript 正则表达式-匹配单词集
在JavaScript中,如何使用正则表达式从Javascript 正则表达式-匹配单词集,javascript,regex,Javascript,Regex,在JavaScript中,如何使用正则表达式从“John Smith-Jane Doe”中获取['John Smith',Jane Doe'],其中-可以是任何分隔符(\/,+*:;)等等? 使用newregexp('[a-zA-Z]+[^\/\-\\*\+],'g')只会给我[“John”、“Smith”、“Jane”、“Doe”]如果你想匹配多个单词,你需要在你的字符类中有一个空格。我认为像/[a-zA-Z]+/g这样的东西将是一个起点,与exec或通过String#match重复使用,比如
“John Smith-Jane Doe”
中获取['John Smith',Jane Doe']
,其中-
可以是任何分隔符(\/,+*:;
)等等?使用
newregexp('[a-zA-Z]+[^\/\-\\*\+],'g')
只会给我[“John”、“Smith”、“Jane”、“Doe”]
如果你想匹配多个单词,你需要在你的字符类中有一个空格。我认为像/[a-zA-Z]+/g
这样的东西将是一个起点,与exec
或通过String#match
重复使用,比如:
var str=“John Smith-Jane Doe”;
var指数;
var matches=str.match(/[a-zA-Z]+/g);
如果(匹配){
显示(“找到”+matches.length+“:”);
对于(索引=0;索引
但是它是非常有限的,大量的名称都有a-Z以外的字符,您可能需要反转您的逻辑并使用一个否定类(/[^…]/g
,其中..
是一个可能的分隔符列表)。你可不想把“伊丽莎白·佩尼亚”或“杰拉德·特霍夫特”留在冷场里!:-) 试试这个,没有正则表达式:
var arr = str.split(' - ')
编辑
多个分离器:
var arr = str.split(/ [-*+,] /)
你总是有两个词吗?如果你要否决投票,那么请留下一条评论,说明你为什么这么做。这是一个问题,它可能不限于两个词,而不是我的dv,但OP明确地说:“…其中
-
可以是任何分隔符(`
/`,
+
*
:
;
)以此类推……,所以这不是一个有用的答案。-
可以用任何东西替换。我的理解是,OP不知道字符串中的分隔符是什么,只是它们可能是各种字符中的任何一个,因此需要处理广泛的范围。这种方法至少需要几十次split
调用才能实现这一点。不管怎样,还是要得到我的支持票。正如我在回答中所说,我认为OP最好是定义分隔符,而不是名称中的字符,因此“Elizabeth Peña”或“Gerard’t Hooft”很有用。:-)这就是你上面的第二个例子,我喜欢这个@T.J.Crowder-编辑负责在前面定义我的分隔符,这与开箱即用的整个名称相匹配,所以我将使用这个
var arr = str.split(/ [-*+,] /)