您的位置:首页 > Web前端 > JavaScript

JavaScript正则表达式

2017-02-09 21:17 316 查看
\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的用法也不是很清楚希
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: