JavaScript总结(3)-javascript中应用正则表达式
2006-09-29 09:51
656 查看
一.正则表达式的创建
1.1创建一个正则表达式
法一. re = /pattern/[flags]
法二. re = new RegExp("pattern",["flags"])
1.2参数说明:
re: 变量名(必选)
pattern: 正则表达式(必选)
flags:标志,包括以下几种:
g (全文查找出现的所有 pattern)
i (忽略大小写)
m (多行查找)
1.3用于创建正则表达式的字符
二.正则表达式的应用
2.1使用方法
在javascript中,通过RegExp 的 test 、exec 方法和 String 的 match、replace、search 、split 进行匹配处理
2.2实例介绍
1.1创建一个正则表达式
法一. re = /pattern/[flags]
法二. re = new RegExp("pattern",["flags"])
1.2参数说明:
re: 变量名(必选)
pattern: 正则表达式(必选)
flags:标志,包括以下几种:
g (全文查找出现的所有 pattern)
i (忽略大小写)
m (多行查找)
1.3用于创建正则表达式的字符
字符 | 描 述 |
---|---|
/ | 有以下两种: 字符通常按字面处理,指示下一个为特殊字符不必完全按字面解释;如:/b/ 匹配字符 'b',通过在字符 b 前放置反斜杠,即 //b/,字符就成为特殊并匹配一个单词边境; 指示下一个字符不是特殊字符并按字面解释;如: * 是一个特殊字符意味着前0个或多字符将匹配,如 /a*/ 意味着匹配 0 或更多的 a,为了按字面匹配 *,需在其前加反斜杠(如 /a/*/ 匹配 'a*')。 |
^ | 匹配输入或行的开始,如 /^A/ 不匹配 "an A" 中的字符 'A',但匹配 "An A" |
$ | 匹配输入或行的结尾,如 /t$/ 不匹配 "eater" 中的字符 't',但匹配 "eat" |
* | 匹配前0个或多个字符,如 /bo*/ 匹配 "A ghost booooed" 中的 'boooo' 和 "A bird warbled" 的 'b',但在 "A goat grunted" 中无匹配 |
+ | 匹配前1个或多个字符,等价于 {1,},如 /a+/ 匹配 "candy" 中的字符 'a',以及 "caaaaaaandy" 中的所有 a |
? | 匹配前0个或1个字符,如 /e?le?/ 匹配 "angel" 中的 'el',以及 "angle" 中的 'le' |
. | 匹配任何单一字符除了换行符,如 /.n/ 在语句 "nay, an apple is on the tree" 中匹配 'an' 和 'on' ,但不匹配 'nay' |
(x) | 匹配 'x' 并存储该匹配,如:在语句 "foo bar." 中 /(foo)/ 匹配并存储 'foo',该匹配子串可以被数组元素 [1], ..., 中调用,或从预定义 RegExp 对象属性 $1, ..., $9 中调用。 |
x|y | 匹配 'x' 或'y',如:/green|red/ 匹配语句 "green apple" 中的 'green',以及语句 "red apple" 中的 'red' |
{n} | n 是一个正整数,精确匹配前 n 个出现的字符,如:/a{2}/ 并不匹配 "candy" 中的字符 'a',但它匹配 "caandy" 中的两个 a,以及 "caaandy" 中的第一和第二个字符 a。 |
{n,} | n 是一个正整数,匹配至少前 n 个出现的字符,如:/a{2,}/ 不匹配 "candy" 的字符 'a',但匹配 "caandy" 和 "caaaaaaandy" 中所有的字符 'a'。 |
{n,m} | n 和 m 是一个正整数,匹配至少前 n 个但最多 m 个的字符,如:/a{1,3}/ 在 "cndy" 中无匹配,而匹配 "candy" 中的 'a'、 "caandy" 中的第一和第二个 'a',以及 "caaaaaaandy" 中第一到第三个 'a'(即 "aaa"),虽然原始字符串中有更多个字符 'a'。 |
[xyz] | 一个字符集合,匹配任一内附的字符,您也可以用连接符指定一个字符范围,如:[abcd] 等同于 [a-d]。它可以匹配 "brisket" 中的 'b' 和 "ache" 中的 'c'。 |
[^xyz] | 一个负数或补码字符集合,它匹配没有内附在方框号中的任何字符,同样您也可以用连接符指定一个字符范围,如:[^abc] 等同于 [^a-c],它可以匹配 "brisket" 中的 'r',但不匹配其中的 'b'。 |
[/b] | 匹配一个退格 backspace(不要同 /b 搞混淆) |
/b | 匹配一个单词边界(字符串中各字符的分界,如空白和换行符),如://bn/w/ 匹配 "noonday" 中的 'no' ,//wy/b/ 匹配 "possibly yesterday" 中的 'ly'。 |
/B | 匹配一个非单词边界,如://w/Bn/ 匹配 "noonday" 中的 'on',/y/B/w/ 匹配 "possibly yesterday" 中的 'ye'。 |
/cX | 此处 X 为一个控制字符,它匹配字符串的控制字符,如 //cM/ 匹配字符串中的 control-M。 |
/d | 匹配一个数字符,等同于 [0-9],如://d/ 或 /[0-9]/ 均匹配 "B2 is the suite number" 中的 '2'。 |
/D | 匹配任何非数字符,等同于 [^0-9],如://D/ 或 /[^0-9]/ 匹配 "B2 is the suite number" 中的 'B'。 |
/f | 匹配换页符 |
/n | 匹配换行符 |
/r | 匹配回车符 |
/s | 匹配一个单独空白字符,包括空格、制表符、换页、换行,等同于 [ /f/n/r/t/v],如://s/w*/ 匹配 "foo bar" 中的 ' bar'。 |
/S | 同上面相反,它匹配除了空白符外的单一字符,等同于 [^ /f/n/r/t/v],如://S/w*/ 匹配 "foo bar" 中的 'foo'。 |
/t | 匹配一个制表符 |
/v | 匹配一个垂直制表符 |
/w | 匹配任何包含下划线的字母和数字字符,等同于 [A-Za-z0-9_],如://w/ 匹配 "apple" 中的 'a',"$5.28" 是的 '5' 和 "3D" 中的 '3'。 |
/W | 匹配任何非字母和数字符,等同于 [^A-Za-z0-9_],如://W/ 或 /[^$A-Za-z0-9_]/ 匹配 "50%" 中的 '%'。 |
/n | n 是一个正整数,返回存储的匹配引用,如:/apple(,)/sorange/1/ 匹配 "apple, orange, cherry, peach" 中的 'apple, orange,'。 注意:如果左边的括号少于 /n 中指定的数字,/n 作为一个八进制转义字符(见下行) |
/ooctal /xhex | /ooctal 是一个八进制转义字符值,/xhex 是一个十六进制转义字符值,允许您植入一个 ASCII 码到规则表达式。 |
1.4常用的正则表达式
序号 | 作用 | 正则表达式 |
1 | 要求是手机 | ^[1]{1}[3]{1}(/d){9}$ |
2 | 要求是电话 | ^((/d){3,4}[-]{1})?([1-9]{1}(/d){5,7})([-]{1}(/d){1,6})?$ |
3 | 要求是日期(1999-10-02) | ^/d{4}-/d{1,2}-/d{1,2} |
4 | 要求是非负整数(正整数 + 0) | ^/d+$ |
5 | 要求是正整数 | ^[0-9]*[1-9][0-9]*$ |
6 | 要求是非正整数(负整数 + 0 | ^((-/d+)(0+))$ |
7 | 要求是负整数 | ^-[0-9]*[1-9][0-9]*$ |
8 | 要求是整数 | ^-?/d+$ |
9 | 要求是非负浮点数(正浮点数 + 0 | ^/d+(/./d+)?$ |
10 | 要求是正浮点数 | ^(([0-9]+/.[0-9]*[1-9][0-9]*)([0-9]*[1-9][0-9]*/.[0-9]+)([0-9]*[1-9][0-9]*))$ |
11 | 要求是非正浮点数(负浮点数 + 0) | ^((-/d+(/./d+)?)(0+(/.0+)?))$ |
12 | 要求负浮点数 | ^(-(([0-9]+/.[0-9]*[1-9][0-9]*)([0-9]*[1-9][0-9]*/.[0-9]+)([0-9]*[1-9][0-9]*)))$ |
13 | 要求是浮点数 | ^(-?/d+)(/./d+)?$ |
14 | 要求是由26个英文字母组成的字符串 | ^[A-Za-z]+$ |
15 | 要求是由26个英文字母的大写组成的字符串 | ^[A-Z]+$ |
16 | 要求是由26个英文字母的小写组成的字符串 | ^[a-z]+$ |
17 | 要求是由数字和26个英文字母组成的字符串 | ^[A-Za-z0-9]+$ |
18 | 要求是由数字、26个英文字母或者下划线组成的字符串 | ^/w+$ |
19 | 要求是mail | ^/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*$ |
20 | 要求是汉字 | ^[/u4e00-/u9fa5],{0,}$ |
21 | 要求是*** | /d{18}|/d{15} |
22 | 要求是邮编 | /d{6} |
23 | 要求是密码(以字母开头,且为6-16位) | ^[a-zA-Z]/w{5,17}$ |
2.1使用方法
在javascript中,通过RegExp 的 test 、exec 方法和 String 的 match、replace、search 、split 进行匹配处理
方法 | 描 述 |
---|---|
exec | 在字符串中执行搜索一个匹配的 RegExp 方法,它返回查找结果的数组 |
test | 在字符串中测试一个匹配的 RegExp 方法,返回 true 或 false |
match | 在字符串中执行搜索一个匹配的 String 方法,返回一个信息的数组或错配后返回一个 null |
search | 在字符串中测试一个匹配的String 方法,返回匹配的索引,或错配后返回 -1 |
replace | 在字符串中执行搜索一个匹配的 String 方法,并用另一个替换的该匹配的子串 |
split | 一个 String 方法,用规则表达式或一个固定字符串分离为子串的数组 |
相关文章推荐
- JavaScript总结(3)-javascript中应用正则表达式
- 第21章 JavaScript正则表达式应用
- JavaScript的replace方法与正则表达式结合应用讲解
- java正则表达式学习总结,以及和javascript正则表达式的区别
- 正则表达式的应用小总结
- JAVA正则表达式语法及应用总结
- Java正则表达式应用总结
- JavaScript 字符串与正则表达式系列总结
- JavaScript的replace方法与正则表达式结合应用讲解
- javascript正则表达式的常用方法总结
- JavaScript学习总结(八)正则表达式
- Java正则表达式应用总结
- javascript正则表达式总结(test|match|search|replace|split|exec)
- javascript正则表达式的常用方法总结
- javascript 正则表达式的总结
- 【JS】javascript 正则表达式 大全 总结
- JavaScript的replace方法与正则表达式结合应用讲解
- Java正则表达式应用总结Pattern/Matcher
- Java正则表达式应用总结
- java正则表达式学习总结,以及和javascript正则表达式的区别