以下为本篇文章全部内容:
大家好 我是 叶子,sunny 的朋友。
今天 由我来向大家讲一下有关正则的使用知识。
正则是我们在开发中常用到的文字处理方法,而由于在不同环境中可能会有相应的变化,比如PHP和Javascript
下面也主要围绕这两门语言来讲一下如果使用好正则。阅读该文章之前我认为你已经是会使用一些简单的正则了。
先说一下正则要帮我们做什么?
首先我的理解,正则是帮我们查找字符的,查找需要的或者不需要的字符,记住是字符不是字符串。
在计算机中可以存在的字符都比较多,为了能快速进行判断,正则给我们归了类!
[...]方括号内的任意字符
<script> alert(/[a]/.test('a')); </script>
[^...]不在方括号内的任意字符
<script> alert(/[^a]/.test('a')); alert(/[^a]/.test('b')); </script>
. 除了换行符和其他Unicode行终止符之外的任意字符
( 点 这个符号在PHP中 不同的修饰符下 有不同的代表意义,它 在默认情况下 是不包含换行符的,但是如果加上特定的修饰符 s 它可以包含换行符)
<script> alert(/.k/.test("\nk")); </script>
<?php var_dump(preg_match('/.k/s', "\nk")); var_dump(preg_match('/.k/', "\nk"));
\w 任何ASCII字符组成的单词,等价于[a-zA-Z0-9_]
<script> alert(/\w+/.test('user_name')); alert(/\w+/.test('_user_Name123')); </script>
<?php var_dump(preg_match('/\w+/', 'user_name')); var_dump(preg_match('/\w+/','_user_Name123'));
\W 任何不是ASCII字符组成的单词,等价于[^a-zA-Z0-9_]
<script> alert(/\W+/.test('%^&\*(( -+')); alert(/\W+/.test('也包括中文')); alert(/\W+/.test('_user_Name123')); </script>
<?php var_dump(preg_match('/\W+/', '%^&\*(( -+')); var_dump(preg_match('/\W+/', '也包括中文')); var_dump(preg_match('/\W+/','_user_Name123'));
\d 任何ASCII数字,介于[0-9]
<script> alert(/\d/.test('1')); </script>
\D 除了ASCII数字之外的任何字符,等价于[^0-9]
<script> alert(/\D+/.test('也包括中文')); </script>
\s 任何Unicode空白符
<script> alert(/\s+/.test("\t\r\n\0")); </script>
\S 任何非Unicode空白符的字符
\b 元字符匹配单词边界。
<script> alert(/\b[a-zA-Z]/.exec("user_name")); alert(/\b[a-zA-Z]/.exec("8ser_name")); </script>
如果是单词边界获取单词的第一个 字母
第1个 限制单词边界第一个只能是字母 所以返回了 u
第2个 限制是字母 而单词第一个是数字 所以返回了 null
\B 非元字符匹配单词边界。
<script> alert(/\B[a-zA-Z]/.exec("user_name")); alert(/\B[a-zA-Z]/.exec("u8er_name")); alert(/\B[a-zA-Z]/.exec("u8888")); </script>
如果是单词边界获取单词的第一个 字母
第1个 限制单词非边界第2个只能是字母 所以返回了 u
第2个 限制是字母 而单词第2个是数字 所以匹配到第3个字母 所以返回了 e
第3个 因为只有边界是字母 其他都是数字 所以只能返回 null
\n 查找换行符 还有其他符号等 \t \f \0 \v \r
<script> alert(/\n/.test("\n")); </script>
\ddd d代表8进制数字 是ASCII 的8进制编码 可从ASCII找到对应的8进制编码
<script> alert(/\127/.test("W")); </script>
\xdd d 代表16进制数字 ASCII 16进制编码
<script> alert(/\x57/.test("W")); </script>
<?php var_dump(preg_match('/\x57/', "W"));
\udddd d 代表16进制数字 Unicode 16进制编码
<script> alert(/\u0057/.test("W")); </script>
在PHP中 是用 \x{dddd}
<?php var_dump(preg_match('/\x{0057}/', "W"));
字符区间,区间可以是 字符之间 也可以是 ASCII 字符区间
[a-z]
[a-z0-9]
[\141-\172]
<script> alert(/[a-z]/.test("w")); alert(/[\141-\172]/.test("w")); </script>
<?php var_dump(preg_match('/[a-z]/', "w")); var_dump(preg_match('/[\x{0061}-\x{007A}]/', "w"));
非字符区间,区间可以是 字符之间 也可以是 ASCII 字符区间
[^a-z]
[^a-z0-9]
[^\141-\172]
<script> alert(/[^a-z]/.test("W")); alert(/[^\141-\172]/.test("W")); </script>
<?php var_dump(preg_match('/[^a-z]/', "W")); var_dump(preg_match('/[^\x{0061}-\x{007A}]/', "W"));
总赞数量:18274
总踩数量:128087
文章数量:29