繁体   English   中英

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

[英]How to match regular expression In Javascript

我的字符串[FBWS-1] comes first than [FBWS-2]

在这个字符串中,我想找到所有[FBWS-NUMBER]

我试过这个:

 var term = "[FBWS-1] comes first than [FBWS-2]"; alert(/^([[AZ]-[0-9]])$/.test(term)); 

我希望得到[FBWS-NUMBER]字符串匹配的所有NUMBERS

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

任何人都可以帮助我。

请注意, ^([[AZ]-[0-9]])$匹配字符串的开头( ^ ), [或大写的ASCII字母(带[[AZ] ), - ,ASCII数字和] char在字符串的末尾。 所以,基本上,像[-2]Z-3]这样的字符串。

你可以用

/\[[A-Z]+-[0-9]+]/g

请参阅正则表达式演示

注意如果您需要“硬编码” FBWS (仅匹配FBWS-123而不是ABC-3456 FBWS-123 ),请在模式中使用它而不是[AZ]+/\\[FBWS-[0-9]+]/g

细节

  • \\[ - 一个[ char
  • [AZ]+ - 一个或多个(由于+量词)大写ASCII字母
  • - - 连字符
  • [0-9]+ - 一个或多个(由于+量词)ASCII数字
  • ] - a ] char。

String#match()一起使用的/g修饰符返回所有找到的匹配项。

JS演示:

 var term = "[FBWS-1] comes first than [FBWS-2]"; console.log(term.match(/\\[[AZ]+-[0-9]+]/g)); 

您可以使用:

[\w+-\d]

 var term = "[FBWS-1] comes first than [FBWS-2]"; alert(/[\\w+-\\d]/.test(term)); 

您现有的正则表达式不起作用的原因有多种。

  • 当你真正想要介于两者之间时,你试图匹配字符串的开头和结尾,不要使用^$
  • 你唯一试图匹配一个字母字符[AZ]你需要使用+来使这个贪婪

您可以使用短字\\w\\d缩短[AZ][0-9] 括号通常是不必要的。

请注意,您的代码只返回一个真正的假值(您的使用test )ATM不清楚这是否是您想要的。 您可能希望使用match全局修饰符( //g )而不是test来获取集合。

以下是使用string.match(reg)获取所有匹配字符串的示例:

 var term = "[FBWS-1] comes first than [FBWS-2]"; var reg1 = /\\[[AZ]+-[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); 

您的正则表达式/^([[AZ]-[0-9]])$/是错误的。

试试这个正则表达式, /\\[FBWS-\\d\\]/g

如果你只想找到1个匹配,则删除g,因为g将找到所有类似的匹配

编辑:有人提到你想要[“任意组合” - “数字”],因此,如果这是你正在寻找的,那么这应该工作/\\[[AZ]+-\\d\\]/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM