关于正则表达式的问题

发布于 2024-09-12 15:22:01 字数 301 浏览 6 评论 0原文

我看到这个说法

$name = ereg_replace("[^A-Za-z0-9.]", "", $name);

[^A-Za-z0-9.][A-Za-z0-9.] 有什么区别?

根据我对正则表达式的理解,[]用于包含函数ereg_replace中替换的所有有效字符。

那么[]中包含^的目的是什么呢?

谢谢

I saw this statement

$name = ereg_replace("[^A-Za-z0-9.]", "", $name);

What is the difference between [^A-Za-z0-9.] and [A-Za-z0-9.]?

Based on my understanding of regular expression, the [] is used to include all valid characters for replacment in function ereg_replace.

Then what is the purpose of including ^ into the []?

Thank you

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

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

发布评论

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

评论(1

小傻瓜 2024-09-19 15:22:01

字符类 […] 中的初始 ^ 反转字符类中描述的字符集。 [A-Za-z0-9.] 匹配 A-Za-z0-9. 描述的字符集中的一个字符,[^A- Za-z0-9.] 匹配除 A-Za-z0-9. 描述的字符之一之外的任何其他字符。这些其他字符是什么取决于定义字符串的基本字符集。

因此 [abc] 匹配 abc[^abc] 匹配除 abc 之外的任何其他字符。您的示例代码将删除 [A-Za-z0-9.] 未描述的任何字符。这样就只剩下 [A-Za-z0-9.] 字符。

The initial ^ inside a character class […] inverts the set of characters that are described inside the character class. While [A-Za-z0-9.] matches one character of the character set described by A-Za-z0-9., [^A-Za-z0-9.] matches any other character except one of the characters described by A-Za-z0-9.. What these other characters are depends on the base character set the string is defined with.

So [abc] matches either a, b, or c and [^abc] matches any other character except a, b, and c. Your example code will remove any characters that are not described by [A-Za-z0-9.]. That leaves only characters of [A-Za-z0-9.].

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