【发布时间】:2014-12-10 04:05:54
【问题描述】:
我想编写一个需要检查以下内容的正则表达式模式:
每个破折号 (-) 字符的前后必须紧跟一个字母或数字;不允许使用连续的破折号。
如何做到这一点?
【问题讨论】:
-
提供一些有效和无效匹配的例子。
我想编写一个需要检查以下内容的正则表达式模式:
每个破折号 (-) 字符的前后必须紧跟一个字母或数字;不允许使用连续的破折号。
如何做到这一点?
【问题讨论】:
^(?!(?:.*-(?=$|-))|-).*$
试试这个。查看演示。
https://regex101.com/r/aZ6zX0/4
这使用negative lookahead 来确保- 后面没有- 或$ 并且不以- 开头。
【讨论】:
@-#,显然不是有效输入。
.*。但是OP没有指定任何东西
您可以使用下面的简单正则表达式,它使用负前瞻断言。
^(?!-|.*-$|.*-[\W_]|.*[\W_]-).*$
.*-[\W_]|.*[\W_]- 否定前瞻断言中的部分可确保 - 前后没有非单词字符或 _ 符号。
【讨论】: