我有一个应用程序,允许最终用户输入他想要的slug。我正在寻找的是一个正则表达式,检查slug是否有效。
一般来说,有效的意思是指一个以拉丁文开头和结尾的字符串,除以破折号但不超过一个破折号。
更具体地说,以下是正确的:
one-two-three
以下不是:
one---two-thee-
-one-two-three
one-two-three-
因此,使用以下正则表达式我可以,但是如何检查字符串中间是否有不超过两个破折号?
^[a-z][a-z][a-z]$
有没有更好的方法来编写这个正则表达式,以满足我的验证工作?
答案 0 :(得分:14)
http://regexpal.com/可以是一个很好的网页,可以在您编写时检查您的正则表达式。一个方便的工具:)。
看看你的,它应该接受大写字母/数字吗?如果是这样,也许this会有所帮助:
/ ^ [A-ZA-Z0-9] +(: - [A-ZA-Z0-9] +)* $ /
这将只匹配一个或多个序列的序列 由单个 - 分隔的字母数字字符。如果你不想 允许单个单词(例如只是你好),用*替换*乘数 只允许最后一组重复一次或多次。
以下是来自同一个帖子的live sample的链接以进行演示。
围绕方格内的A-Za-z0-9进行更改将允许您仅接受适合您的大写字母,非大写字母或数字。
祝你好运,如果您有任何疑问,请告诉我! :)
答案 1 :(得分:3)
^[a-z][a-z\-]*[a-z]$
实际上这应该是你的正则表达式 并且您的验证应分两个阶段进行测试。
这个正则表达式的第一个,它将是一个基本测试,第二个可以通过拆分hiphens并再次检查分裂字符串上的相同正则表达式来完成。
答案 2 :(得分:1)
我个人的最爱:
^[a-z](-?[a-z])*$
以小写字母开头;然后再降低一些或再加上一个连字符,但紧随其后的是再降低一点。