Javascript 用于捕获逗号分隔值的Regexp
我有一个字符串,可以是以逗号分隔的Javascript 用于捕获逗号分隔值的Regexp,javascript,regex,split,Javascript,Regex,Split,我有一个字符串,可以是以逗号分隔的\w列表,例如: abc123 abc123,def456,ghi789 我试图找到一个JavaScript regexp,它将返回['abc123'](第一种情况)或['abc123','def456','ghi789'](不带逗号) 我试过: ^(\w+,?)+$--不,因为只有最后一个重复模式将被匹配,789 ^(?(\w+)+$——同样的故事。我使用的是非捕获括号。然而,对于重复的单词,捕捉似乎并没有发生 我试图用regexp做的事情可能吗?我尝
\w
列表,例如:
- abc123
- abc123,def456,ghi789
['abc123']
(第一种情况)或['abc123','def456','ghi789']
(不带逗号)
我试过:
--不,因为只有最后一个重复模式将被匹配,789^(\w+,?)+$
——同样的故事。我使用的是非捕获括号。然而,对于重复的单词,捕捉似乎并没有发生^(?(\w+)+$
'/([^,]+)/'
或者,javascript中的字符串有一个split方法,可以基于delimeter拆分字符串:
s.split(',')
可能您可以使用拆分功能
var st = "abc123,def456,ghi789";
var res = st.split(',');
首先在逗号上拆分,然后筛选出不匹配的结果:
str.split(',').filter(function(s) { return /^\w+$/.test(s); })
如果要在出现错误时放弃整个输入,最简单的方法是验证,然后拆分:
if (/^\w+(,\w+)*$/.test(input)) {
var values = input.split(',');
// Process the values here
}
如果要允许空值,请将\w+
更改为\w*
尝试同时使用单个正则表达式进行匹配和验证需要模拟\G
功能,该功能断言最后匹配的位置。为什么需要\G
?因为它阻止引擎在下一个位置重新尝试匹配并绕过验证。请记住,ECMA脚本正则表达式没有后视功能,因此您无法区分无效字符的位置及其后面的字符:
something,=bad,orisit,cor&rupt
^^ ^^
当您无法区分这两个位置时,您不能依靠发动机单独执行匹配所有操作。虽然可以对RegExp.exec
使用While循环,并自己断言最后一次匹配的位置,但如果有更干净的选项,为什么要这样做
如果您想对任何可用的字符进行savage,这是一个可行的选择。此正则表达式模式在新行中分隔数值,新行中包含特殊字符,如
、、、、#
等
var val = [1234,1213.1212, 1.3, 1.4]
var re = /[0-9]*[0-9]/gi;
var str=“abc123,def456,asda12,1a2ass,yy8,ghi789”;
var re=/[a-z]{3}\d{3}/g;
变量列表=str.match(re);
文件。写入(“
list.length:+list.length”);
对于(变量i=0;i列表(“+i+”):“+list[i]);
}
string.split(“,”)有什么问题?
它将根据“,”进行拆分,而我想检查匹配项是否符合\w=坏东西、好东西的预期输出是什么?您必须处理逗号分隔值中的转义机制吗?不,不需要转义。。。如果不满足要求,只需回答“否”\w如果有任何内容无效,您是否会放弃整个输入?或者你想保留什么?我确实想特别匹配。因此,我提出了([\w]*,?)(这也不会迫使我在最后有一个答案)。听起来不错?是的,但你不需要*
@merc你在回答什么问题?