需要在具有约束的字段上用javascript写正则表达式-
名称最多可以包含80个字符。它必须以单词字符开头,并且必须以单词字符或''结尾。名称可以包含单词字符或“。”,“-”,“。”。
示例-
允许的字符串-
abc.'
abc-'.'
ab-.''-a
不允许使用的字符串-
rish a
rish.-
到目前为止,我已经尝试过:
!/^[A-Za-z.-'']{1,80}$/.test(Name)
答案 0 :(得分:2)
我想,您正在寻找类似这样的东西:
^(?=[A-Za-z])[A-Za-z\.\-']{0,79}[A-Za-z']$
说明:
^(?=[A-Za-z])
:检查字符串是否以单词字符开头。这是一个前瞻性断言,因此不会参与比赛。模式的其余部分仍必须至少占1个字符,最多80个字符。
[A-Za-z\.\-']{0,79}
:第一个和中间字符,因此最多79个字符。最后一个字符强制至少一个。
[A-Za-z']$
:以字母或撇号结尾。
答案 1 :(得分:0)
使用超前断言是解决此问题的一种非常聪明的方法。 另一种方法是使用OR运算符:
^[a-zA-Z]$|^[a-zA-Z][a-zA-Z.\-']{0,78}[a-zA-Z']$
它只是检查是否:
^[a-zA-Z]$
-只有一个单词字符
或 |
^[a-zA-Z]$
-给定字符串开头的一个单词字符
[a-zA-Z.\-']{0,78}
-从零到七十八个字符。 。 (点)不必转义,因为它在字符集中没有特殊含义。
[a-zA-Z']
-一个字字符或撇号
因此,它验证字符串的时间长于1个字符。