正则表达式基本语法

来源:互联网 发布:mysql存储过程 编辑:程序博客网 时间:2024/06/17 19:25
正则表达式:
匹配一系列字符串的匹配符,具有简洁高效的特点
在很多语言中都支持,比如javascript,php,java等等


1.在不同的语言中,正则表达式的支持方式有所差别


2.在js中若需要使用正则表达式,则需要/.../
语法为: string.match(/正则表达式/),如
string.match(/a/)   即匹配字符串中第一个a


3.普通匹配符:能够匹配与之对应的字符,任何字符都是一个普通匹配符
正则表达式默认区分大小写


4.正则标记符(参数)
i 不区分大小写
g 全局匹配(即所有的)
如string.match(/a/),只匹配第一个
而string.match(/a/g),会匹配string中所有的a
m 多行匹配


5.多匹配符(注意,他们都只能匹配一个)
即能够匹配多个字符中的一个字符
\d 匹配0~9的所有数字
\w 匹配字母、数字、下划线(变量名命名规范)
. 匹配除换行符\n之外的所有字符
如: var str = "Hello0323";
var r=str.match(/\w.\d/g);
返回lo0和323两个匹配结果


6.能够自定义规则的匹配符 []。
如:var str = "Hello0323";
var r=str.match(/\d[24]/);
//第二数值为2|4
若在[]中添加了^符号,代表取反,即除了[]内的。
  如:var str = "Hello0323";
var r=str.match(/\d[^54]/);


7.用来修饰匹配次数的匹配符 
(1) {n}代表前面匹配符出现的次数,即它只代表前驱
如:var str = "0323";
var r=str.match(/\d{2}/);
(2) {n,m}出现次数在n~m之间,包括n和m; {n,}:n~max; {,m}:min~m
(3) +:代表1~max
(4) ?:代表0~1
(5) *:代表0~max


8.正则表达式的完整匹配
(1)^: 在[]中代表取反,但是在外面哦代表从开始匹配
如: var str = "0323";
var r=str.match(/^\d{2}/);
(2)$: 持续匹配到结束
如: var str = "03";
var r=str.match(/^\d{2}$/);
(3)特殊符号的匹配,使用转义字符 \特殊符号\
如:var str = "0^3";
var r=str.match(/\^\d$/);


9.条件分支|和()
(1)|: 条件分支,即或
(2)(): a.括号中的内容成为一个独立的整体;
b.括号中的内容可以进行分组,单独匹配,若不需要此功能,则在开始添加(?:)
如:var str = "02.jpeg";
var r=str.match(/\.(?:png|jpe?g|gif)$/);
//如果不添加?:则会匹配.jpeg和jpeg


10.数值匹配
1:把合法的数值写出并分析规律
2:根据规律编写正则,并且测试非法数值
3:如果设置了^和$,则()整体匹配成功才会进行分组匹配(仅针对match方法)
如:var str = "-12,345E23";
var r=str.match(/^(?:-?)(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][-+]?\d+)?$/);
var r=str.match(/^(-?)(?:0|[1-9]\d*)(\.\d+)?([eE][-+]?\d+)?$/);
//图亲查看http://www.json.org/中的number


11.中文处理
1:默认中文采用的是双字节,在计算机中通过ASC||对应表来输入汉字
2:[]来设置中文的范围即可
escape()可以把字符串转换为ASC编码,unescape()可以把编码转换为中文
3:中文汉字的第一个字为"一",最后一个字为"龥",
console.info(escape('一')+","+escape('龥'));
将编码范围设置在这两个字的范围之间,即可进行中文的验证
如:var str = "我是一个兵";
var r=str.match(/[\u4E00-\u9FA5]/g);


12.贪婪与懒惰
1:贪即尽可能的多,越多越好,懒则反之。
如:var str = "aabab";
var r = str.match(/a.*b/);
会匹配出"aabab",但实际上,其中的字串"aba"也是符合要求的
2:在正则表达式中默认是贪婪模式,
可以在修饰数量的匹配符(*,+,?,{})后面添加?则代表懒惰
var r = str.match(/a.*?b/);
会匹配到"aba"
1 0
原创粉丝点击