正则表达式匹配超过允许的字符

发布于 2024-12-11 09:11:52 字数 296 浏览 0 评论 0原文

我试图验证给定的字符串仅包含字母、数字、空格和一组符号中的字符 (!-?():&,;+)。到目前为止,这是我所拥有的:

/^[a-zA-Z0-9 !-?\(\):&,;\+]+$/

现在这有点起作用,但它也接受其他字符。例如,包含 *# 的字符串进行验证。我认为表达式开头的 ^ 和结尾的 $ 意味着它将匹配整个字符串。我做错了什么?

谢谢。

I am trying to validate that the given string contains contains only letters, numbers, spaces, and characters from a set of symbols (!-?():&,;+). Here is what I have so far:

/^[a-zA-Z0-9 !-?\(\):&,;\+]+$/

Now this works somewhat but it accepts other characters as well. For example, strings containing * or # validate. I thought that the ^ at the beginning of the expression and the $ at the end meant that it would match the whole string. What am I doing wrong?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

江湖彼岸 2024-12-18 09:11:52
/^[a-zA-Z0-9 !-?\(\):&,;\+]+$/

- 你放置它的地方不太好!如果您想将 - 放置在字符类中,请确保将其放置在第一个最后,例如,

/^[a-zA-Z0-9 !?\(\):&,;\+-]+$/

否则它将采用 ! 的范围。直到 ?无论这个范围如何...取决于您的正则表达式机器。

最后,特殊字符在字符类中并不特殊。所以没有必要逃避其中的大多数:

/^[a-zA-Z0-9 !?():&,;+-]+$/
/^[a-zA-Z0-9 !-?\(\):&,;\+]+$/

The - is not nice where you placed it! If you want to place - inside a character class be sure to either place it first or last e.g.

/^[a-zA-Z0-9 !?\(\):&,;\+-]+$/

Otherwise it will take the range of ! until ? whatever this range maybe...Depends on your regex machine.

Finally special characters are not special inside character classes. So no need to escape most of them :

/^[a-zA-Z0-9 !?():&,;+-]+$/
九歌凝 2024-12-18 09:11:52

您已在字符类中指定了一个“范围”:

[!-?]

表示 !?
之间的所有 ASCII 符号
http://www.regular-expressions.info/charclass.html

你需要转义减号 -\ 反斜杠。 (OTOH,字符类中 + 之前的反斜杠是多余的。)

You have specified a "range" within your character class:

[!-?]

Means all ASCII symbols between ! and ?
http://www.regular-expressions.info/charclass.html

You need to escape the minus - with a \ backslash. (OTOH the backslash is redundant before the + and ( and ) within a character class.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文