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重复使用,比如

在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
重复使用,比如:

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(/ [-*+,] /)