c# - 正则表达式匹配字母和数字,其中一些符号可以出现在它们之间
问题描述
我正在尝试创建一个正则表达式来匹配字母和数字,其中.
和-
可以_
出现在它们之间。
- 有效匹配示例:“stephan”、“mike03”、“s.johnson”、“st_steward”、“john-johnson”、“12345”、“324_231351231”。
- 无效用户示例:''--123"、"....."、"john_-"、"_steve"、".info"。
我想出了这个表达
[A-Za-z0-9.\-_]+
但它也会匹配那些stefan_johnson_
不应该匹配的东西,因为_
它只能出现在字母和数字之间。如果我们在开头有_
或任何其他已经提到的符号,情况也是如此。
解决方案
您可以使用
^[A-Za-z0-9]+(?:[._-][A-Za-z0-9]+)*$
请参阅正则表达式演示。详情:
^
- 字符串的开始[A-Za-z0-9]+
- 一个或多个 ASCII 字母或数字(?:[._-][A-Za-z0-9]+)*
- 零次或多次出现[._-]
- 一个.
,_
或-
[A-Za-z0-9]+
- 一个或多个 ASCII 字母或数字
$
- 字符串结束。
结果可能你需要支持任何 Unicode 字母或数字,然后使用
^[\p{L}\p{N}]+(?:[._-][\p{L}\p{N}]+)*$
where\p{L}
匹配任何 Unicode(基本)字母并\p{N}
匹配任何 Unicode 数字。
如果您不想允许尾随(换行)字符,请替换$
为。\z
\n
另外,请参阅我的“使用逗号分隔值验证字符串(没有前导/尾随分隔符) ” YT 视频,解释这种验证技术。
推荐阅读
- google-cloud-platform - 如何为 Google Cloud Scheduler 设置基本身份验证
- reactjs - 解析开关输入值 ant design
- ios - 我尝试在 iOS 中使用 mailcore2 连接和获取邮件。但我得到了错误
- javascript - 通过javascript添加新的选择菜单后,选定的选项保持切换到默认值
- angular - 如何在 Angular 中使用光标事件?
- javascript - 为什么从 MailChimp 的元数据 Api 中得到错误 Invalid_Key?
- javascript - 打字稿中的“未定义对象关键字”错误
- html - 固定侧边栏和导航栏
- vba - excel vba按钮将文本添加到文件
- date - SSSZZ 在日期格式 yyyy-MM-dd'T'HH:mm:ss.SSSZZ 中是什么意思?