slug的JS正则表达式字符串验证

时间:2014-03-17 12:27:52

标签: javascript regex validation

我有一个应用程序,允许最终用户输入他想要的slug。我正在寻找的是一个正则表达式,检查slug是否有效。

一般来说,有效的意思是指一个以拉丁文开头和结尾的字符串,除以破折号但不超过一个破折号。

更具体地说,以下是正确的:

one-two-three

以下不是:

one---two-thee-
-one-two-three
one-two-three-

因此,使用以下正则表达式我可以,但是如何检查字符串中间是否有不超过两个破折号?

^[a-z][a-z][a-z]$

有没有更好的方法来编写这个正则表达式,以满足我的验证工作?

3 个答案:

答案 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])*$

以小写字母开头;然后再降低一些或再加上一个连字符,但紧随其后的是再降低一点。