青岛农业大学教务网(1小时学会正则表达式)
青岛农业大学教务网:1小时学会正则表达式。

一、概念
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
二、语法
一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。
/(d+).(d+).(d+).(d+)/i
三、元字符
| 字符 | 描述 |
|---|---|
| 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后向引用、或一个八进制转义符。例如,’n’ 匹配字符 “n”。’n’ 匹配一个换行符。 | |
| ^ | 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 ‘n’ 或 ‘r’ 之后的位置。 |
| $ | 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 ‘n’ 或 ‘r’ 之前的位置。 |
| . | 用于查找单个字符,除了换行和行结束符。var str=”That’s hot!”; var patt1=/h.t/g; 找到 hat hot |
| * | 匹配前面的子表达式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。 * 等价于{0,}。 |
| + | 匹配前面的子表达式一次或多次。例如,’zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。 |
| ? | 匹配前面的子表达式零次或一次。例如,”do(es)?” 可以匹配 “do” 或 “does” 中的”do” 。? 等价于 {0,1}。 |
| {n} | n 是一个非负整数。匹配确定的 n 次。例如,’o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。 |
| {n,} | n 是一个非负整数。至少匹配n 次。例如,’o{2,}’ 不能匹配 “Bob” 中的 ‘o’,但能匹配 “foooood” 中的所有 o。’o{1,}’ 等价于 ‘o+’。’o{0,}’ 则等价于 ‘o*’。 |
| {n,m} | m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。刘, “o{1,3}” 将匹配 “fooooood” 中的前三个 o。’o{0,1}’ 等价于 ‘o?’。请注意在逗号和两个数之间不能有空格。 |
| x|y | 匹配 x 或 y。例如,’z|food’ 能匹配 “z” 或 “food”。'(z|f)ood’ 则匹配 “zood” 或 “food”。 |
| [xyz] | 字符集合。匹配所包含的任意一个字符。例如, ‘[abc]’ 可以匹配 “plain” 中的 ‘a’。 |
| [^xyz] | 负值字符集合。匹配未包含的任意字符。例如, ‘[^abc]’ 可以匹配 “plain” 中的’p’。 |
| [a-z] | 字符范围。匹配指定范围内的任意字符。例如,'[a-z]’ 可以匹配 ‘a’ 到 ‘z’ 范围内的任意小写字母字符。 |
| [^a-z] | 负值字符范围。匹配任何不在指定范围内的任意字符。例如,'[^a-z]’ 可以匹配任何不在 ‘a’ 到 ‘z’ 范围内的任意字符。 |
| b | 匹配一个单词边界,也就是指单词和空格间的位置。例如, ‘erb’ 可以匹配”never” 中的 ‘er’,但不能匹配 “verb” 中的 ‘er’。 |
| B | 匹配非单词边界。’erB’ 能匹配 “verb” 中的 ‘er’,但不能匹配 “never” 中的 ‘er’。 |
| d | 匹配一个数字字符。等价于 [0-9]。 |
| D | 匹配一个非数字字符。等价于 [^0-9]。 |
| s | 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ fnrtv]。 |
| S | 匹配任何非空白字符。等价于 [^ fnrtv]。 |
| w | 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]’。 |
| W | 匹配任何非单词字符。等价于 ‘[^A-Za-z0-9_]’。 |
四、修饰符
PHP正则表达式支持的修饰符:
| 修饰符 | 描述 |
|---|---|
| i | 执行对大小写不敏感的匹配。 |
| m | 默认的正则开始”^”和结束”$”只是对于正则字符串如果在修饰符中加上”m”,那么开始和结束将会指字符串的每一行:每一行的开头就是”^”,结尾就是”$”。 |
| s | 如果在修饰符中加入”s”,那么默认的”.”代表除了换行符以外的任何字符将会变成任意字符,也就是包括换行符! |
| x | 如果加上该修饰符,表达式中的空白字符将会被忽略,除非它已经被转义。 |
| e | 本修饰符仅仅对于replacement有用,代表在replacement中作为PHP代码。 |
| A | 如果使用这个修饰符,那么表达式必须是匹配的字符串中的开头部分。比如说”/a/A”匹配”abcd”。 |
| E | 与”m”相反,如果使用这个修饰符,那么”$”将匹配绝对字符串的结尾,而不是换行符前面,默认就打开了这个模式。 |
| U | 和问号的作用差不多,用于设置”贪婪模式”。 |
Javascript正则表达式支持的修饰符:
| 修饰符 | 描述 |
|---|---|
| i | 执行对大小写不敏感的匹配。 |
| g | 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 |
| m | 执行多行匹配。 |
五、正则表达式操作符的优先级
下表从最高优先级到最低优先级列出各种正则表达式操作符的优先权顺序:
| 操作符 | 描述 |
|---|---|
| 转义符 | |
| (), (?:), (?=), [] | 圆括号和方括号 |
| *, +, ?, {n}, {n,}, {n,m} | 限定符 |
| ^, $, anymetacharacter | 位置和顺序 |
| | | “或”操作 |
六、常用正则表达式
邮箱:
/^[w]*?[@][w]*?.[a-zA-Z]{2,3}$/i
手机:
/^1[1-9][d][d]{8}$/
汉字:
/^[u4e00-u9fa5]{0,}$/
域名:
/[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+.?/
HTML标记:
/<(S*?)[^>]*>.*?|<.*? />/
IPV4地址:
/((2(5[0-5]|[0-4]d))|[0-1]?d{1,2})(.((2(5[0-5]|[0-4]d))|[0-1]?d{1,2})){3}/
六、常用函数
php常用正则函数:
preg_match_all("|<[^>]+>(.*)</[^>]+>|U",
"<b>example: </b><div align=left>this is a test</div>",
$out, PREG_PATTERN_ORDER);
echo $out[0][0] . ", " . $out[0][1] . "n";
echo $out[1][0] . ", " . $out[1][1] . "n";
//以上例程会输出:
<b>example: </b>, <div align=left>this is a test</div>
example: , this is a test
preg_filter — 执行一个正则表达式搜索和替换
preg_grep — 返回匹配模式的数组条目
preg_last_error — 返回最后一个PCRE正则执行产生的错误代码
preg_match_all — 执行一个全局正则表达式匹配
preg_match — 执行一个正则表达式匹配
preg_quote — 转义正则表达式字符
preg_replace — 执行一个正则表达式的搜索和替换
preg_split — 通过一个正则表达式分隔字符串
javascript 正则相关函数:
test() 方法检索字符串中的指定值。返回值是 true 或 false。
var patt1=/e/;
document.write(patt1.test("The best things in life are free"));
//输出:true
exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。
var patt1=/e/;
document.write(patt1.exec("The best things in life are free"));
//输出:e
compile() 既可以改变检索模式,也可以添加或删除第二个参数。
var patt1=/e/;
document.write(patt1.exec("The best things in life are free"));
patt1.compile("d");
document.write(patt1.exec("The best things in life are free"));
//输出:ed
随机文章
站长导航友情链接交换
搜素引擎算法
网站内容优化
GEO培训
站长导航
搜素引擎算法
关键词排名优化
百度搜索“网赚联盟”即可找到本站,微信搜索“小小课堂网”关注小小课堂网公众号。网赚联盟( wangzhuan.org.cn )欢迎用户投稿,发布者:用户投稿,文章版权归作者所有,投稿文章不代表网赚联盟立场,中二少年发布为网赚联盟原创文章,转载请注明出处:https://wangzhuan.org.cn/24821.html

微信扫一扫
支付宝扫一扫