php - 重复字符的预匹配

标签 php regex preg-match

我需要验证一个字符串,该字符串可以包含小写字符和破折号,但不能在开头、结尾或重复。然后也可以有数字,但不能在开头。

它应该是这样工作的:

Match: ab9cd-a9bc-abbbc95
Not match: 5abcd
Not match: abbcd-
Not match: -abcd
Not match: abcd--abcd

除了最后一种情况,我已经能够做所有事情,在这种情况下,重复的破折号不应该匹配。

我有这个:

/^[a-z]+[a-z0-9\-]+[a-z0-9]$/

我试过了,但没有按预期工作:

/^[a-z]+[a-z0-9\-?]+[a-z0-9]$/

最佳答案

另一种方法:

^[a-z](?:[a-z\d]|[a-z\d]\-)*[a-z\d]+$

在此处解释演示:http://regex101.com/r/mE8pB8

关于php - 重复字符的预匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15220326/

相关文章:

php - 如果文件大于给定大小,则阻止从远程源加载

python - 将给定数字转换为所需格式的正则表达式

c# - 正则表达式匹配两个或多个连续字符

php - 如果不是则预匹配

regex - 如何使用正则表达式获取括号之间的内容

php - "Error establishing a database connection"是什么意思

javascript - 单击警告框中的是按钮时需要使用所选选项保存页面

c# - VB.net 正则表达式到 C#

php - preg_match 用户名验证正则表达式允许 > 和 < 尽管这些字符未列入白名单

php - 如何在 Homestead 上运行 Composer?