我有字符串[FBWS-1] comes first than [FBWS-2]
在此字符串中,我想查找所有[FBWS-NUMBER]
我尝试过这个:
var term = "[FBWS-1] comes first than [FBWS-2]";
alert(/^([[A-Z]-[0-9]])$/.test(term));
我想获取NUMBERS
字符串匹配的所有[FBWS-NUMBER]
。
但是没有成功。我是正则表达式的新手。
有人可以帮我吗?
答案 0 :(得分:3)
请注意,^([[A-Z]-[0-9]])$
匹配字符串(^
),[
或大写ASCII字母(带有[[A-Z]
),-
, ASCII数字和字符串末尾的]
字符。因此,基本上是[-2]
或Z-3]
之类的字符串。
您可以使用
/\[[A-Z]+-[0-9]+]/g
请参见regex demo。
注意如果您需要“硬编码” FBWS
(仅匹配FBWS-123
之类的值而不匹配ABC-3456
),请使用它代替{{1 }},[A-Z]+
。
详细信息
/\[FBWS-[0-9]+]/g
-一个\[
字符[
-一个或多个(由于[A-Z]+
量词)大写ASCII字母+
-连字符-
-一个或多个(由于[0-9]+
量词)ASCII数字+
-一个]
字符。与]
一起使用的/g
修饰符将返回所有找到的匹配项。
JS演示:
String#match()
答案 1 :(得分:0)
您可以使用:
[\w+-\d]
var term = "[FBWS-1] comes first than [FBWS-2]";
alert(/[\w+-\d]/.test(term));
您的现有正则表达式无法正常工作的原因有很多。
^$
[A-Z]
,就需要使用+
使这个贪婪您可以使用简写[A-Z]
和[0-9]
缩短\w
和\d
。通常不需要括号。
请注意,您的代码仅返回一个真假值(您使用test
)ATM,尚不清楚这是否是您想要的。您可能想将match
与全局修饰符(//g
)一起使用,而不是test
来获取集合。
答案 2 :(得分:0)
以下是使用string.match(reg)
获取所有匹配字符串的示例:
var term = "[FBWS-1] comes first than [FBWS-2]";
var reg1 = /\[[A-Z]+-[0-9]\]/g;
var reg2 = /\[FBWS-[0-9]\]/g;
var arr1 = term.match(reg1);
var arr2 = term.match(reg2)
console.log(arr1);
console.log(arr2);
答案 3 :(得分:0)
您的正则表达式action two
是错误的。
尝试一下此正则表达式,saga
如果您只想找到1个匹配项,请删除g,因为g会找到所有相似的匹配项
编辑:有人提到您想要[“任意组合”-“数字”],因此,如果您要查找的是/^([[A-Z]-[0-9]])$/