【问题标题】:Alternative to declaring regular expression in literal format以文字格式声明正则表达式的替代方法
【发布时间】:2015-09-13 10:58:52
【问题描述】:

plugin 允许我使用正则表达式进行数据验证,如下所示:

<input type="text" data-validation-regexp="/red/i" data-validation="custom">

但是,我没有以我想要实现的 /red/i 的预期格式输入正则表达式 - 我必须像 data-validation-regexp="red" 这样简单地将字符串红色输入到属性中,以便获得验证功能。不过,这仅测试小写单词“red”,而我希望它不区分大小写并尊重“i”修饰符。

这提出了一个问题,是否有任何替代的写作方式(我一直在玩这个,但收效甚微):

/red/i

【问题讨论】:

  • 作为最后的手段,你可以使用[Rr][Ee][Dd]...
  • 这与一个问题无关:输入“redccccc”是有效的——只有“red”、“RED”和小写/大写的组合应该是有效的。
  • 啊,^[Rr][Ee][Dd]$ 就是这样。
  • 非常感谢,请允许我对此进行测试,然后考虑将其作为答案提交?
  • 您链接的文档说该插件使用 html5 作为正则表达式。因此this 可能会回答您的问题。

标签: regex validation


【解决方案1】:

您链接到的插件似乎不支持标志。
因此,您唯一的选择是“手动”匹配大小写的每个字符,例如

[Rr][Ee][Dd]

如果您希望 RegEx 仅匹配整个输入,请在其周围添加 ^...$

^[Rr][Ee][Dd]$

【讨论】:

  • 请问我们最终将如何更改 RegEx 以允许不间断空格?例如,如果最终用户输入“红色”。目前输入空格无效。
  • ^\s*[Rr][Ee][Dd]\s*$
  • 非常感谢 - 尽管我分解这段代码以增加我的理解是至关重要的。我知道 1) [Rr][Ee][Dd] 匹配小写/大写字符。 2) ^[Rr][Ee][Dd]$ 除了阻止我们手动设置的字符之外,我不太明白这能实现什么。 3) ^\s*[Rr][Ee][Dd]\s*$ 允许字符串前后有空格。
  • RegEx101 解释输入的正则表达式,Debuggex 为它创建一个图表,如果这对您有帮助的话。
猜你喜欢
  • 1970-01-01
  • 2010-09-09
  • 2015-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多