我使用这个正则表达式来匹配任何只包含英文字母的字符串/^[a-zA-Z\s]+$/
现在我需要编辑它以匹配破折号'-'和点'。连同英文字母。字符串可能包含破折号或点或非(只是字母)。
任何想法 ?
我使用这个正则表达式来匹配任何只包含英文字母的字符串/^[a-zA-Z\s]+$/
现在我需要编辑它以匹配破折号'-'和点'。连同英文字母。字符串可能包含破折号或点或非(只是字母)。
任何想法 ?
只需像这样在字符类中添加-
和:.
/^[-.a-zA-Z\s]+$/
对于-
和.
和空间:
/^[-a-z\s.]+$/i
// "Foo-bar" OK
// "Foo.bar" OK
// "Foo bar" OK
// "Foo - bar" OK
// "Foo.bar-zaz" OK
// "Foo.bar-zaz TROZ" OK
对于-
或.
或空格:
/^[a-z\s]+$|^[-a-z]+$|^[a-z.]+$/i
// "Foo-bar" OK
// "Foo.bar" OK
// "Foo bar" OK
// "Foo - bar" FAIL
// "Foo.bar-zaz" FAIL
// "Foo.bar-zaz TROZ" FAIL
让我解释:
/i
忽略大小写,所以你不需要A-Z
|
(管)为你做或。
^
在你的字符串的开头
$
直到最后
现在只是在字符限制内[...]
:
将-
char 限制放在开头是一种很好的做法,因为它以多种方式表示范围,所以放在开头可以避免错误。
\s
空格(不能在 JS 中范围)
.
inside[.]
只是一个点,但 outside 表示任何字符(甚至是不可见的字符)。
正则表达式/^[a-zA-Z\s\-\.]+$/
将匹配您需要的内容。