--
(连续超过1次)?例如ab--c
-
在单词后面不允许,例如abc-
-
在单词开头不允许,例如-abc
^[A-Za-z0-9-]+$
是我目前所拥有的。
答案 0 :(得分:27)
^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$
使用此正则表达式,连字符仅在组内匹配。此连字符的每一侧都出现[A-Za-z0-9]+
子表达式。因为此子表达式匹配一个或多个字母数字字符,所以连字符不能在开头,结尾或另一个连字符旁边匹配。
答案 1 :(得分:20)
^(?!-)(?!.*--)[A-Za-z0-9-]+(?<!-)$
<强>解释强>
^ # Anchor at start of string
(?!-) # Assert that the first character isn't a -
(?!.*--) # Assert that there are no -- present anywhere
[A-Za-z0-9-]+ # Match one or more allowed characters
(?<!-) # Assert that the last one isn't a -
$ # Anchor at end of string
答案 2 :(得分:2)
尝试:^([a-zA-Z0-9]+[-]{1})*[a-zA-Z0-9]+$
Regex101链接:https://regex101.com/r/xZ2g6p/1
这仅允许在两个字符集之间使用一个连字符,并在字符集的开始和结尾处将其阻止。
答案 3 :(得分:1)
^[a-zA-Z0-9](?!.*--)[a-zA-Z0-9-]*[a-zA-Z0-9]$
^[a-zA-Z0-9] /*Starts with a letter or a number*/
(?!.*--) /*Doesn't include 2 dashes in a row*/
[a-zA-Z0-9-]* /*After first character, allow letters or numbers or dashes*/
[a-zA-Z0-9]$ /*Ends with a letter or a number*/
<强>匹配强>
重播/ 重新播放编
不匹配:
重播/重新播放/重播
答案 4 :(得分:0)
如果在字符串的开头和结尾不允许使用“ - ”,则表示您正在搜索“一个或多个alanum,然后是一个或多个一个或多个组的序列,后跟一个或多个alanum” “
{{1}}
简单是正则表达式的宝贵座右铭。 (nota:搜索小案例字符,添加它们。我不明白)