一 为什么要用正则表达式?
以提取字符串中的数字为例.
如果用传统字符串操作,代码如下
// 传统字符串操作
var str = '12,87 76 -ddf e dd 89 ff76 9';
var arr = [];
var tmp = '';
var i = 0;
for (i = 0;i<str.length;i++) {
if (str.charAt(i)>='0' && str.charAt(i)<='9') {
tmp += str.charAt(i);
} else {
if (tmp) {
arr.push(tmp);
tmp='';
}
}
}
if (tmp) {
arr.push(tmp);
tmp='';
}
alert(arr) // 12,87,76,89,76,9
而使用正则表达式,只需要下面这几句代码
// 正则表达式
var str = '12,87 76 -ddf e dd 89 ff76 9';
var re = /\d+/g;
alert(str.match(re)); // 12,87,76,89,76,9
二 正则表达式能做什么?
操作字符串.(也是它唯一能做的.)
三 正则表达式与字符串操作配合使用
var str = 'abcdef';
var re = /a/; // 检测字符串里是否包含a
var re = /a/i; // 检测字符串里是否包含a,并且忽略大小写,i代表ignore
alert(re.test(str)); // true
// 正则与search配合
var str = 'asdf 443 vczxv 55';
var re = /\d/; // \d 在正则里就表示数字
alert(str.search(re)); // 5 因为第一个数字出现在5这个位置
// 正则与match配合
var str = 'sdf e443 fedef 55 66gg dff 99';
var re = /\d/;
alert(str.match(re)); // 4 即只返回了第一个数字
re = /\d/g; // g代表global,即找到全部的数字
alert(str.match(re)); // 4,4,3,5,5,6,6,9,9 即返回了所有数字
re = /\d\d/g;
alert(str.match(re)); // 44,55,66,99 因为有两个/d,所以计算机会两个两个的分割
re = /\d+/g; // \d+ 代表多个数字,任意长度
alert(str.match(re)); // 443,55,66,99
// 正则与replace配合
var str = 'abacdAef';
alert(str.replace('a', 'T')); // Tbacdef 即只会替换掉第一个a
alert(str.replace(/a/g, 'T')); // TbTcdAef 即替换了所有a
alert(str.replace(/a/gi, 'T')); // TbTcdTef 即替换了所有a,且忽略大小写,注意:gi和ig都行,顺序无所谓
四 正则表达式常见应用---敏感词过滤
window.onload = function () {
var txt1 = document.getElementById('txt1');
var txt2 = document.getElementById('txt2');
var btn = document.getElementById('btn1');
btn.onclick = function() {
var re = /我们|你们|他们/g;
txt2.value = txt1.value.replace(re, '**');
}
}
效果如下,一点击过滤按钮,敏感词就被替换成**了.
敏感词过滤示例.png
网友评论