asp.net - 正则表达式匹配字符串中任意位置的多个字符串
问题描述
我正在尝试使用 Regex 在 ASP.NET 中添加一些验证。基本上我需要确保一个文本框同时包含 ***ThisString*** 和 ***ThatString*** 包括星号。
我可以让它与一个或一个或另一个一起工作,只是不能同时出现在字符串的任何部分。它正在验证。
谢谢
解决方案
正如 nanhydrin 正确指出的那样,如果有多个字符串之一而不是另一个字符串,我的解决方案将不起作用。如果可能发生这种情况,为了便于阅读,您可以分别检查每个字符串
第一个正则表达式-
(?:\*{3}ThisString\*{3})
第二个正则表达式-
(?:\*{3}ThatString\*{3})
如果在这两种情况下都找到匹配项,那么您就可以开始了!
原答案:-
这是您想要的正则表达式:(?:\*{3}(?:ThisString|ThatString)\*{3})
注意:确保启用全局匹配并确保正确转义星号。
如果上面的表达式找到 2 个(或更多)匹配项,则表示您可以开始了。
解释:-
- 整个事情都在一个非捕获组中,这是为了确保其中的所有内容都完全匹配
- 字符串的每一侧都有 3 颗星,一侧有 3 颗星,而另一侧没有,将不会导致匹配
- 两者
ThisString
都ThatString
在一个分组的替代方案中,这是为了减少混乱,你可以完全干扰所有可能的位置模式,但这更好,因为位置在这里并不重要。***ThatString***
可以先来,***ThisString***
反之亦然。
确保检查找到的匹配项的长度,长度必须为 2 才能满足您描述的条件。
这是现场演示
推荐阅读
- python - 在 anaconda 中安装 keras 时出错。/p KERAS_BACKEND= 0
我在 anaconda 中创建了一个新环境,在安装了 spyder、tensorflow 和 theano 之后,我尝试安装 keras,但收到一条错误消息(见下文)。现在我什至无法打开 spyder,因为它停止工作。Spyder 仅在我再次卸载 keras 时才有效。
你知道会发生什么吗?我在同一台计算机上有另一个环境,它可以与安
- android - 无论视图被拖动到哪里,都可以在画布上绘制
- google-apps-script - 无论如何,是否根据顶列值中的值突出显示谷歌表格中的整个列?
- javascript - DoubleTapToGo.js - 基于浏览器大小的绑定/取消绑定
- reactjs - 具有不同主题的 React 应用程序
- html - 实现静态 html 页面的国家 - 州 - 城市选择
- javascript - 将 xhr 转换为 .wav
- c++ - Lua C API 自定义打印函数,字符串中传入空格时不调用
- google-sheets - 如何根据另一个工作表中的列表过滤行?(谷歌表格)
- kubernetes - 如何从 Ansible 将变量传递给 Kubernetes YAML 文件?