1,符号标记组一
- ^:位于字符串开头,表示非
- $:位于字符串结束,正则分组(),$1
- b:匹配单词分界位置
- B:匹配非单词分界位置
2,符号标记组二
- G、g:全局搜索
- I、i:不区分大小写
- M、m:多行标志
3,符号标记组三
- \d:0~9任意数字
- \D:任何非数字字符
- \w:任何单词字符,即A~Z,a~z,0~9以及下划线_
- \W:任何非单词字符
- \s:任何空白字符
- \S:任何非空白字符
- .:除换行符(\n)外任意单个字符
- […]:匹配位于方括号内任意一个字符
- [^…]:匹配除了方括号内的字符以外任何字符
4,符号标记组四
- {n}:出现了n次
- {n,}:出现了n次,及以上次数
- {n,m}:出现了n-m次
- ?:出现了0或1次
- +:出现了1次或多次
- *:出现了0次或多次
5,符号标记组五
- ?: :可选非捕获型分组
在js中,正常的捕获分组格式是(XX),非捕获分组格式为(?:XX)。
var str = "a1***ab1cd2***c2";
var reg1 = /((ab)+\d+)((cd)+\d+)/i;
var reg2 = /((?:ab)+\d+)((?:cd)+\d+)/i;
alert(str.match(reg1));//ab1cd2,ab1,ab,cd2,cd
alert(str.match(reg2));//ab1cd2,ab1,cd2
非捕获分组,只是用来匹配,并不会提取分组内容。也就是说,如果我们只想用圆括号将一些字符用数量词修饰,并不需要这个分组的内容,这就是非捕获分组。
------------------------------------------------------------------------------
使用RegExp对象构造函数
var myRegExp = new RegExp ("\\b");
需要多加一个反斜杠。
例子:
1,在数字前面添加字符串
输出结果:
var myString1 = "2012,2013,2014";
var theRegExp = /(\d{4})/g; //()分组标记$1
var myString1 = myString1.replace(theRegExp, "the year $1");
document.write(myString1);
2,确定分界符-
var myStringList = "apple, 0.2, banana, 0.5, orange, 0.1, peach, 0.21";
var theRegExp = /[^a-z]+/i;
var myFruitArray = myStringList.split(theRegExp);
document.write(myFruitArray.join("<br />"));
以非字母的区域作为分界,不区分大小写 = /[^a-z]+/i
3,拆分html
var html = "<h2>Java Script!</h2>" +
"<p> we love javascript!</p>";
var regexp = /<[^>\r\n]+>|[^<>\r\n]+/g;
var results = html.match(regexp);
document.write(results.join("\r\n"));
输出结果应该是:
<h2>
Java Script!
</h2>
……
结果答案自动识别了<h2><p>,输出为
4,表单验证模块
4-1 验证网站
var parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/;
var url = "http://www.ora.com:80/goodparts?q#fragment";
var result = parse_url.exec(url);
常见的匹配
学习自:https://www.w3cschool.cn/regexp/1ngu1pqi.html