gpt4 book ai didi

asp.net - 使用 Regex 在正则表达式中查找正则表达式点

转载 作者:行者123 更新时间:2023-12-02 16:46:14 25 4
gpt4 key购买 nike

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

  1. 检查列表中的 reg exp
  2. 使用诸如 ^[\w.+/-]*$ 之类的内容检查“合理”字符

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

所以我的问题是:有一种经过验证的真实方法可以在正则表达式中查找点,但仅当用作字符类时?也许是正则表达式?

最佳答案

只是为了达成共识,在 a.b[.]\.\[.\[\] ,应该找到两个点:a之间和b ,以及转义大括号之间的最后一个点。其他都是字面句号。

幸运的是,ASP.NET 不知道 \Q\E转义模式片段。

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

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

关于the demo ,观察只有正确的点被匹配。

说明

  • 回顾 (?<!\\)确保我们前面没有转义反斜杠
  • \.匹配我们想要的点
  • 否定前瞻 (?!(?:\\\[\]\[]|[^][])*(?<!\\)\])确保我们不会被跟踪...
  • (?:\\\[\]\[]|[^][])*任意数量的\[ , \], or non []` 字符,然后
  • 右括号前面没有反斜杠:(?<!\\)\]

引用

关于asp.net - 使用 Regex 在正则表达式中查找正则表达式点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24505390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com