使用正则表达式在正则表达式中查找正则表达式点

edc65

在asp.net应用程序中,我需要根据可配置的正则表达式验证用户输入。我在数据库中有此类正则表达式的列表,并且它是用户可配置的,而不是固定的。我的问题是,在这些正则表达式中,点不匹配任何字符,而是匹配任何“合理的”字符(在这种情况下是合理的:字母,数字和其他一些ascii字符)。因此,验证过程分两步进行

  1. 从列表中检查reg exp
  2. 检查类似“合理”的字符 ^[\w.+/-]*$

我想使用一个正则表达式,以便可以将其放在页面上的单个正则表达式验证器中-这样可以提供更好的用户体验。我可以搜索正则表达式中的点,并用更严格的字符类替换[\w.+/-]但是,并非所有的点在正则表达式中都具有相同的含义。

所以我的问题是:在正则表达式中有一种尝试并找到真实点的方法,但是仅当用作字符类时才可以?一个正则表达式也许?

zx81

只是为了进入同一页面,在中a.b[.]\.\[.\[\]应该找到两个点:a之间b,以及最后一个点,位于转义括号之间。其他的则是文字时期。

对我们来说幸运的是,ASP.NET不了解\Q\E逃脱模式片段。

您可以使用此正则表达式:

(?<!\\)\.(?!(?:\\\[\]\[]|[^][])*(?<!\\)\])

演示中,观察到只有正确的点才被匹配。

解释

  • 后面的内容(?<!\\)可确保我们前面没有转义的反斜杠
  • \.我们想要的点相匹配
  • 负面的前瞻性(?!(?:\\\[\]\[]|[^][])*(?<!\\)\])确保我们不会被...
  • (?:\\\[\]\[]|[^][])*任何数量的\[\], or non[]`字符,然后
  • 不包含反斜杠的右括号: (?<!\\)\]

参考

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章