【问题标题】:Javascript regexp that matches specific letter combinations with number range将特定字母组合与数字范围匹配的 Javascript 正则表达式
【发布时间】:2014-05-20 11:54:25
【问题描述】:

我想要一个只匹配这些字符串的 javascript 正则表达式:

“xs1” “xs2” “xs3” ...等一直到“xs24”

“s1” “s2” “s3” ...等一直到“s24”

“m1” “平方米” “立方米” ...等一直到“m24”

“l1” “l2” “l3” ...等一直到“l24”

“xl1” “xl2” “xl3” ...等一直到“xl24”

例如"xs20" 应该返回 true,但 "xs0" 和 "xs25" 应该返回 false。

我试过了

/^(xs|s|m|l|xl)[1-24]$/ 

但这不是我想要的,因为“xs24”返回 false

【问题讨论】:

  • +1 这个问题显示了一个很好的努力。

标签: javascript regex


【解决方案1】:

你在正确的轨道上

/^(xs|s|m|l|xl)[1-24]$/

除了[1-24] 将匹配从12 的范围或字符4。相反,您需要:

/^(xs|s|m|l|xl)(1?[1-9]|10|2[0-4])$/

这将匹配从19 的字符,无论是否带有1 前缀、102,后跟一个从0 到4 的数字。

【讨论】:

  • [1-24] 不匹配 - 因为它是一个介于 1 和 2 之间的范围,它匹配 1 24
  • /^(xs|s|m|l|xl)(1?\d|2[0-4])$/.test("xs0") 返回真。只有 1-24 之间的数字应该返回 true。
  • @AdrianRosca 已更新(虽然现在开始看起来有点乱 - 可能有更简洁的方法)。
  • /^(xs|s|m|l|xl)([1-9]|1\d|2[0-4])$/ 在我看来会更干净一些。
  • @AdrianRosca,你是如何创建正则表达式的?如果使用 new 运算符,则需要双重转义 /^(xs|s|m|l|xl)([1-9]|1\\d|2[0-4])$/
猜你喜欢
  • 2017-11-21
  • 2021-11-26
  • 2014-11-05
  • 1970-01-01
  • 1970-01-01
  • 2012-04-26
  • 2011-11-01
  • 1970-01-01
  • 2022-08-17
相关资源
最近更新 更多