简单正则表达式的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单正则表达式的问题相关的知识,希望对你有一定的参考价值。

我在验证规则中有以下正则表达式:

^[a-zA-Z0-9',!;?~>+&"-@#%*.s]{1,1000}$

但是,我可以输入我认为不应该被允许的======

我的想法是,如果没有适当的逃脱或某种东西,-可能会造成麻烦,但这是我的头脑。

答案

你用-逃脱向我们展示的正则表达式不接受===。 但如果-没有逃脱,===将被接受。见this

正则表达式中的-是特殊的,如果它没有被转义并被包含在范围中作为最小值和最大值的字符包围,则用作范围运算符:

[a-z]匹配任何小写字符。

[-az]匹配-az

[az-]匹配-az

[a-z]匹配-az

[a-c-d-f]匹配abc-def。第一个和最后一个-充当范围运算符,但中间的一个用字面处理。

在你的情况下,="-@范围内,因此得到匹配。

另一答案
.

一切都匹配。你要

.
另一答案

-将被解释为范围指标。如果你想匹配文字[],你需要把它放在-括号中的第一个或最后一个。

另一答案

你的正则表达式适合我,但如果我删除-逃脱它匹配=。我相信你这样做。

以上是关于简单正则表达式的问题的主要内容,如果未能解决你的问题,请参考以下文章

循环通过 python 正则表达式匹配

asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串

text 正则表达式片段

markdown 正则表达式模式片段

java 字符串替换

python 正则表达式 re模块基础