以下为本篇文章全部内容:
大家好 我是 叶子,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"));
总赞数量:18276
总踩数量:128089
文章数量:29