regex 正则表达式不应匹配两个或多个连续的破折号

ee7vknir  于 2023-08-08  发布在  其他
关注(0)|答案(2)|浏览(98)

我有以下regex:

\p{Alpha}[\p{Alnum}-]+\p{Alnum}

字符串
这样,文本应该以字母字符开头,后面可以是字母数字和破折号。
但我不想有两个或更多的连续破折号。在这种情况下,我可以使用的正确正则表达式是什么?
谢谢大家
弗兰克

mspsb9vt

mspsb9vt1#

你可以考虑这个正则表达式解决方案:

^\p{Alpha}\p{Alnum}*(?:-\p{Alnum}+)*$

字符串
RegEx Demo

RegEx详情:

  • ^:开始
  • \p{Alpha}:匹配字母表
  • \p{Alnum}*:匹配0个或多个字母数字字符
  • (?:-\p{Alnum}+)*:匹配-,后跟1+个字母数字字符。重复该组0次或更多次
  • $:结束
dy2hfwbg

dy2hfwbg2#

也许这会有用
\p{Alpha}[\p{Alnum}-]+(?!-)\p{Alnum}
在这个模式中,(?!-)是负先行Assert,它确保上一个匹配之后没有破折号。

相关问题