\n 换行符
\s 空格
\S 非空格
\d 数字
\D 非数字
\w 字符(包含字母,数字和下划线)
\W 非字符
常用的正则表达式匹配:
匹配中文:[\u4e00-\u9fa5]
行首行尾空格:^\s*|\s*Email:\w+@[a−z0−9]+(.[a−z]+)1,3
网址:[a-zA-z]+://[^\s]*
QQ号:[1-9][0-9]{4,9}
邮政编码:[1-9]\d{5}
身份证:[1-9]\d{14}|[1-9]\d{17}[1-9]\d{16}x
在正则表达式的使用中常用到:
indexOf 查找
var str ="Hello world!"
alert(str.indexOf("Hello")
alert(str.indexOf("World")
alert(str.indexOf("world")
弹出结果就为
0
-1
6
substring 获取子字符串
var str ="hello world"
alert(str.substring(3,6))
弹出
lo w
charAt 获取某个字符
var str ="hello world"
alert(str.charAt(3))
弹出
l
split 分割字符串,获取数组
var str="How are you doing today?"
document.write(str.split(" ") + "<br />")
document.write(str.split("") + "<br />")
document.write(str.split(" ",3))
输出
How,are,you,doing,today?
H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?
How,are,you
正则表达式的方法:
1.正则.test(字符串)返回布尔值,用作判断
var str = 'abcdef';
var re = /b/; //里面是个整体,如果是bd则是假
alert(re.test(str));
2.字符串.search(正则)返回匹配成功位置
var str ="abcdef";
var re =/B/i //不区分大小写则加i
alert(str.search(re))
弹出
1
3.str.match(正则)。匹配字符串,成功返回数组,失败返回null
str.match(/\d+/g) //g是全剧匹配 +是至少出现一次
4.字符串.replace(正则,新的字符) 。正则匹配,如果成功就把匹配成功的字符替换成新的字符。
var str ="abcdef";
var re =/a/;
alert(str.replace(re,"b"));
弹出
bbcdef
正则表达式的范围
^写在正则最前面表示起始必须为
$写在正则的最后表示结束必须为
正则表达式的例子
<title>无标题文档</title>
<style type="text/css">
textarea{width:300px; height:500px;}
</style>
</head>
<body>
<textarea id="text1"></textarea>
<input type="button" id="btn1" value="转换" class="box box1 box2"/>
<textarea id="text2"></textarea>
<script>
var str = 'haj123sdk54hask33dkhalsd879';
//在str中找出数字放在数组中
function findNum(str){
var arr = [];var tmp = '';
for(var i=0;i<str.length;i++){
if( str.charAt(i)<='9' && str.charAt(i)>='0' ){
tmp += str.charAt(i);}
else{if(tmp){
arr.push(tmp);tmp = '';
}
}
}
if(tmp){
arr.push(tmp);tmp = '';
}
return arr;
}
//用正则表达式找到数字放在数组里
function findNum(str){
return str.match(/\d+/g);
}
alert(findNum(str));
//几种简单的创建数组和对象的方法
var arr=[];
var arr = new Array();
var obj ={};
var obj = new Object();
var re = /a/;
var re = new RegExp('a');
//正则匹配失败返回布尔值为0
var str = 'abcdef';
var re = /abd/; //里面是个整体,如果是bd则是假
alert(re.test(str));
//\D为非数字的正则匹配,结果为0
var str = '37482t9348791';
var re = /\D/;
alert(!re.test(str));
//不分大小写,匹配b返回b的位置
var str = 'abcdef';
var re = /B/i;
alert(str.search(re));
var oText1 = document.getElementById('text1');
var oText2 = document.getElementById('text2');
var oBtn = document.getElementById('btn1');
//剔除敏感词
oBtn.onclick = function(){
var str = oText1.value;
var re = /公安部|斧子|死亡|服毒身亡/g;
str = str.replace(re,function(a){
var num = '';
for(var i=0;i<a.length;i++){
num+='*';
}
return num;
});
oText2.value = str;
}
alert(str);
//把-变成.变成2013.6.7
//s0为3- 6- s1是3 6 s2是-
var str = '2013-6-7';
var re = /(\d)(-)+/g;
str = str.replace(re,function($0,$1,$2){
//alert($0);
return $1+'.';
})
alert(str);
//正则表达式是的分组处理
var str = 'abc';
var re = /(a)(b)(c)/;
alert(str.match(re));
//[]里面是或者的关系返回的布尔值为1
var str = 'abc';
var re = /a[bde]c/;
alert(re.test(str));
//^表示排除的意思 返回的布尔值为0
var str = 'abc';
var re = /a[^bde]c/;
alert(re.test(str));
//[a-z]表示从a到z中都可以。返回的布尔值1
var str = 'abc';
var re = /a[a-z]c/;
alert(re.test(str));
//<h3>标题</h3>aaaaa
//替换成标题aaaaa
oBtn.onclick = function(){
var str = oText1.value;
var re = /<(\w|\/)[^<]+>/g;
str = str.replace(re,'');
alert(str);
}
//匹配开头为数字或者结尾是数字的内容替换成空。
oBtn.onclick = function(){
var str = oText1.value;
var re = /^\d+|\d+$/g;
str = str.replace(re,'');
alert(str);
}
//匹配独立部分
var str='onetwo';
var re =/two\b/;
alert(re.test(str));
var re = /\w\w/;
var re = /(\w)\1/;
</script>
</body>
</html>
这里面
\b
/<(\w|\/)[^<]+>/g的用法也不是很清楚希