【问题标题】:Match string to list of defined strings将字符串匹配到已定义字符串的列表
【发布时间】:2013-04-29 20:31:07
【问题描述】:

我需要能够确定字符串是否与定义值列表匹配。

假设我有一个已定义的字符串列表,例如

a | activ | blue | lagoon | ex (defind list is much longer and contains approx. 50+ possibilties)

我应该能够匹配以下任何一个;

 a
 a[name]
 activ
 activ[class=somevalue]
 blue
 lagoon[name=somevalue], ...e.t.c

是否可以通过正则表达式确定传递的字符串是否包含在定义的列表中?

谢谢...

【问题讨论】:

  • nameclasssomevalue 来自哪里?您是否只想在它们周围允许等号和方括号?

标签: javascript regex


【解决方案1】:

只要字符串始终存储为:value | value(值和管道之间有一个空格),您就可以轻松做到:

str.match(new RegExp(values.split(' | ').join('|'))

如果您需要计算精确的单词,您可以使用values.split(' | ').join('\\b|\\b')

【讨论】:

  • +1。或者new RegExp(values.split(' | ').join('|')).test(str).
【解决方案2】:

这是你要找的吗?:

/^(?:a|activ|blue|lagoon)\b(\[(?:name|class)(?:=somevalue)?])?$/.test(yourstring);

【讨论】:

    【解决方案3】:
    ^(a|activ|blue|lagoon)(?:\[(\w+)=?(\w*)\])?$
    

    对于“激活[class=something]”

    group 1 = activ
    group 2 = class
    group 3 = something
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 2013-06-18
      • 2021-11-30
      • 2016-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多