JavaScript_正则表达式
【规则】
开头结尾
"^The":表示所有以"The"开始的字符串("There","The cat"等);
"of despair$":表示所以以"of despair"结尾的字符串;
重复
"ab*":表示一个字符串有一个a后面跟着零个或若干个b。("a", "ab", "abbb",……);
"ab+":表示一个字符串有一个a后面跟着至少一个b或者更多;
"ab?":表示一个字符串有一个a后面跟着零个或者一个b;
"a?b+$":表示在字符串的末尾有零个或一个a跟着一个或几个b。
"ab{2}":表示一个字符串有一个a跟着2个b("abb");
"ab{2,}":表示一个字符串有一个a跟着至少2个b;
"ab{3,5}":表示一个字符串有一个a跟着3到5个b。
"(b¦cd)ef":表示"bef"或"cdef";
"^.{3}$":表示有任意三个字符的字符串(长度为3个字符)
"[ab]":表示一个字符串有一个"a"或"b"(相当于"a¦b");
"[a-d]":表示一个字符串包含小写的'a'到'd'中的一个(相当于"a¦b¦c¦d"或者"[abcd]");
"^[a-zA-Z]":表示一个以字母开头的字符串;
"[0-9]%":表示一个百分号前有一位的数字;
边界
^ 行开头
$ 行结尾
\b 单词的边界
\B 非单词的边界
————————————————————————————————————————————————————————————
【注意点】
■ "^.$()¦*+?{\" 这些字符前加上转义字符'\'。
————————————————————————————————————————————————————————————
【使用示例】
● 初始化
var reCat = new RegExp("cat");
var reCat = /cat/;//Perl 风格(推荐)
● 分割金额
var re = new RegExp("(\\d)(\\d{3})(,|\\.|$)");
m = m.replace(re, "$1,$2$3");
● test 检查指定的字符串是否存在
var data = "123123";
var reCat = /123/gi;
alert(reCat.test(data)); //true
//检查字符是否存在 g 继续往下走 i 不区分大小写
● exec 返回查询值
var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";
var reCat = /cat/i;
alert(reCat.exec(data)); //Cat
● match 得到查询数组
var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";
var reCat = /cat/gi;
var arrMactches = data.match(reCat)
for (var i=0;i < arrMactches.length ; i++)
{
alert(arrMactches[i]); //Cat cat
}
● search 返回搜索位置 类似于indexof
var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";
var reCat = /cat/gi;
alert(data.search(reCat)); //23
● replace 替换字符 利用正则替换
var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";
var reCat = /cat/gi;
alert(data.replace(reCat,"libinqq"));
● split 利用正则分割数组
var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";
var reCat = /\,/;
var arrdata = data.split(reCat);
for (var i = 0; i < arrdata.length; i++)
{
alert(arrdata[i]);
}
● var reCat = /(mouse){2}/gi; //mousemouse
● 选取子串
var sToMatch = "#123456789";
var reNumbers = /#(\d+)/;
reNumbers.test(sToMatch);
alert(RegExp.$1); //(反向引用)
● 交换子串
var sToChange = "1234 5678";
var reMatch = /(\d{4}) (\d{4})/;
var sNew = sToChange.replace(reMatch,"$2 $1");
alert(sNew);
● 多行模式
var data = " First second\n thind fourth\n fifth sixth";
var reCat = /(\w+)$/gm;
var arrdata = data.match(reCat);
for (var i = 0; i < arrdata.length; i++)
{
alert(arrdata[i]);
}
————————————————————————————————————————————————————————————
■ JavaScript replace() 方法
● 去除字符串前后空格
replace(/(^\s*)|(\s*$)/g, "");
● jQuery trim()内部实现
str.replace(/^(\s|\u00A0)+/,'').replace(/(\s|\u00A0)+$/,'');
● 兼容不支持trim()的浏览器
if (!String.prototype.trim){
String.prototype.trim = function () {
return this.replace(/(^[\s\n\t]+|[\s\n\t]+$)/g, "");
}
}
————————————————————————————————————————————————————————————