【问题标题】:Javascript case insensitive regex without flags没有标志的Javascript不区分大小写的正则表达式
【发布时间】:2013-01-21 17:59:27
【问题描述】:

情况:

MVC+DevExpress .NET

基于服务器端属性的客户端验证(如 [RegularExpression("^con|prn|aux$")])

有没有办法让验证不区分大小写?

我无法添加 i 标志,因为 RegExp 对象是由

在 DevExpress 客户端代码中创建的

var regEx = new RegExp(this.pattern);

.NET 样式的内联修饰符,如 (?i) 返回“意外的量词”错误。

丑陋的选择是写类似 ^[Cc][Oo][Nn]|[Pp][Rr][Nn]|[Aa][Uu][Xx]$

【问题讨论】:

  • 我猜你知道标志可以作为第二个参数传递给new RegExp,比如new RegExp(pattern, "ig")
  • 我无法修改 RegExp 创建代码。它被硬编码在 DevExpress 资源中的某个地方。
  • 为什么不把你要匹配的字符串小写?
  • 那么你将不得不采取丑陋的选择。请注意,| 的优先级甚至低于^$,因此您需要使用^[Cc][Oo][Nn]$|^[Pp][Rr][Nn]$|^[Aa][Uu][Xx]$ 或非捕获括号^(?:[Cc][Oo][Nn]|[Pp][Rr][Nn]|[Aa][Uu][Xx])$

标签: javascript .net regex devexpress


【解决方案1】:

一旦创建了 javascript RegExp 对象,就不能更改正则表达式或标志。但是,您可以使用 .source 属性获取原始正则表达式源,然后使用新需要的标志创建一个新的 RegExp 对象。

【讨论】:

    猜你喜欢
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    • 2011-04-22
    • 1970-01-01
    • 2019-08-18
    相关资源
    最近更新 更多