regex - 带有 / 或 - 的字母数字的正则表达式
解决方案
您当前的正则表达式存在以下问题:
- 它匹配多个
/
and-
,但仅在一个位置(例如将匹配0123/-/-456
但不匹配0123/456/789
- 它也匹配
|
,您不需要在[character class]
- 它匹配到
end of the string$
,但不匹配 from^the start of the string
(例如它会匹配foo0123/456
,虽然它不会匹配0123/456foo
)
您可以使用Avinash Raj提出的以下正则表达式:
^[a-zA-Z0-9]+(?:[/-][a-zA-Z0-9]+)*$
它通过将匹配斜线和破折号的字符类别以及匹配的 alnum 字符放在 a(?:non-capturing group)
中来修复的第一点,我们可以量化*
以指定它可以出现任意次数。该组将匹配任意数量的斜线或破折号,后跟 alnum 字符。
其他两点很简单,我们删除无用的并在正则表达式的开头|
添加 a 。^
推荐阅读
- c# - 如何根据 WinForms 中的 DataTable 值检查 CheckedListBox 中的项目?
- wordpress - 更新 WP 5.2.2 后操作初始化未触发
- php - Divi主题博客模块中如何获取作者头像?
- android - 私人应用程序对 Android 用户不可见
- docker - Python Alpine 图像中 apt autoremove 的等价物
- vb.net - vb.net bindingsource.filter 来自字符串列表
- php - 如何从 PHP 中的数据库中获取附近的值?
- typescript - NestJS - 方法处理程序正在干扰另一个控制器中具有相同名称的另一个处理程序
- python - 函数和类方法的区别
- javascript - 使用 replaceWith() 方法按 ID 和变量定位