如何在Javascript中匹配正则表达式

时间:2018-06-27 07:58:12

标签: javascript regex

我有字符串[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]

但是没有成功。我是正则表达式的新手。

有人可以帮我吗?

4 个答案:

答案 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]])$/