匹配某些特殊字符的JavaScript正则表达式

匹配某些特殊字符的JavaScript正则表达式,javascript,regex,Javascript,Regex,我使用此正则表达式匹配任何只包含英文字母的字符串/^[a-zA-Z\s]+$/ 现在我需要编辑它,使之与短划线“-”和点“.”以及英文字母匹配。 字符串可以包含破折号、点或非(仅包含字母) 有什么想法吗?只需在字符类中添加-和,如下所示: /^[-.a-zA-Z\s]+$/ 只需在字符类中添加-和,如下所示: /^[-.a-zA-Z\s]+$/ 正则表达式/^[a-zA-Z\s\-\.]+$/将匹配您需要的内容。正则表达式/^[a-zA-Z\s\-\.]+$/将匹配您需要的内容。对于-和和空

我使用此正则表达式匹配任何只包含英文字母的字符串
/^[a-zA-Z\s]+$/

现在我需要编辑它,使之与短划线“-”和点“.”以及英文字母匹配。 字符串可以包含破折号、点或非(仅包含字母)


有什么想法吗?

只需在字符类中添加
-
,如下所示:

/^[-.a-zA-Z\s]+$/

只需在字符类中添加
-
,如下所示:

/^[-.a-zA-Z\s]+$/

正则表达式
/^[a-zA-Z\s\-\.]+$/
将匹配您需要的内容。

正则表达式
/^[a-zA-Z\s\-\.]+$/
将匹配您需要的内容。

对于
-
和空格:

对于
-
或空格:

让我解释一下:

/i
忽略大小写,因此不需要
A-Z

|
(管道)为您执行or

^
在字符串开头

$
直到结束

现在就在字符限制的内部
[…]

-
放在字符限制的开头是一种很好的做法,因为它在很多方面都指示了一个范围,所以放在开头可以避免错误

\s
空格(不能在JS中设置范围)


内部
[.]
只是一个点,但外部表示任何字符(甚至是不可见的字符)。

对于
-
以及空格:

对于
-
或空格:

让我解释一下:

/i
忽略大小写,因此不需要
A-Z

|
(管道)为您执行or

^
在字符串开头

$
直到结束

现在就在字符限制的内部
[…]

-
放在字符限制的开头是一种很好的做法,因为它在很多方面都指示了一个范围,所以放在开头可以避免错误

\s
空格(不能在JS中设置范围)



内部
[.]
只是一个点,但外部意味着任何字符(甚至是不可见的字符)。

无需在字符类中转义
,而且如果将
-
放在
[.]
@NaveedS之后或之前,则可能不需要转义,但这样对我来说更清楚了,你不必担心其他东西会添加到类中。@G-Nugget。。只是一个建议。如果有人给你好的建议,请接受。这是你学习的方式。否则你一辈子都会犯同样的错误。@G-Nugget。。而且,这对你来说更清楚并不意味着这是一个好主意,而且对你的代码的读者来说也会更清楚。请记住,您不是为自己编写代码,而是为他人编写代码。干杯:)无需在字符类中转义
,而且如果将
-
放在
[
之后或
]
@NaveedS之前,可能不需要转义,但这样对我来说更清楚,您不必担心在类中添加了其他内容。@G-Nugget。。只是一个建议。如果有人给你好的建议,请接受。这是你学习的方式。否则你一辈子都会犯同样的错误。@G-Nugget。。而且,这对你来说更清楚并不意味着这是一个好主意,而且对你的代码的读者来说也会更清楚。请记住,您不是为自己编写代码,而是为他人编写代码。干杯:)你需要把
-
放在角色类的末尾。否则您将创建一个从
\s
@RohitJain的范围不,我不是。。。我测试了代码,用你的意思更令人期待。当你在字符类的中间使用<代码> -/COD>时,它有特殊的含义,用作范围。若要按字面意思匹配
-
,应将其放置在字符类的两端。所以:-
[\s-.]
与:-
[-\s.]
[\s-]
不一样。我明白你的意思,但我不这么认为,伙计,检查这里:如果你是对的,代码必须接受
而不是
-
,事实并非如此。@RohitJain对于javascript regexp,它不会像你说的那样工作,因为
\s
不执行范围,但我已更改为良好做法。您需要将
-
放在字符类的末尾。否则您将创建一个从
\s
@RohitJain的范围不,我不是。。。我测试了代码,用你的意思更令人期待。当你在字符类的中间使用<代码> -/COD>时,它有特殊的含义,用作范围。若要按字面意思匹配
-
,应将其放置在字符类的两端。所以:-
[\s-.]
与:-
[-\s.]
[\s-]
不一样。我明白你的意思,但我不这么认为,伙计,检查这里:如果你是对的,代码必须接受
而不是
-
,事实并非如此。@RohitJain对于javascript regexp,它不会像你说的那样工作,因为
\s
不执行范围,但我已更改为良好做法。+1表示不转义字符类中的点,就像您经常看到的那样…+1表示不转义字符类中的点,就像您经常看到的那样…可能的重复
/^[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