我有以下regex:
\p{Alpha}[\p{Alnum}-]+\p{Alnum}
字符串这样,文本应该以字母字符开头,后面可以是字母数字和破折号。但我不想有两个或更多的连续破折号。在这种情况下,我可以使用的正确正则表达式是什么?谢谢大家弗兰克
mspsb9vt1#
你可以考虑这个正则表达式解决方案:
^\p{Alpha}\p{Alnum}*(?:-\p{Alnum}+)*$
字符串RegEx Demo
RegEx详情:
^
\p{Alpha}
\p{Alnum}*
(?:-\p{Alnum}+)*
-
$
dy2hfwbg2#
也许这会有用\p{Alpha}[\p{Alnum}-]+(?!-)\p{Alnum}在这个模式中,(?!-)是负先行Assert,它确保上一个匹配之后没有破折号。
2条答案
按热度按时间mspsb9vt1#
你可以考虑这个正则表达式解决方案:
字符串
RegEx Demo
RegEx详情:
^
:开始\p{Alpha}
:匹配字母表\p{Alnum}*
:匹配0个或多个字母数字字符(?:-\p{Alnum}+)*
:匹配-
,后跟1+个字母数字字符。重复该组0次或更多次$
:结束dy2hfwbg2#
也许这会有用
\p{Alpha}[\p{Alnum}-]+(?!-)\p{Alnum}
在这个模式中,(?!-)是负先行Assert,它确保上一个匹配之后没有破折号。