什么是正则表达式
正则表达式,又称规则表达式。(英语:Regular
Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
//判断字符串中是否含有数字
for(var i = 0; i < str1.length; i++) {
if(str1[i] <= '9' && str1[i] >= '0') {
console.log('此字符串中包含数字' + str1[i]);
break;
}
}
// 使用正则表达式判断是否含有数字
var reg = /\d/;
console.log(reg.test(str1), str1.match(reg))
1.字符串分为两种
a.普通字符(元字符之外的字符)
b.元字符,含有特殊意义的字符
+ - * ? [ ] < > <= = 等
2.js中使用正则表达式的前提是必须有正则表达式对象
创建正则表达式对象
两种方式:
1> 使用new实例化正则表达式
new RegExp(参数1,参数2);
参数都是字符串
参数1 设置匹配原则,匹配的条件
参数2 设置匹配属性,该参数可选,可填写:
i 忽略大小写
g 全局匹配,结合match使用,默认检索的时候只会找到第一个匹配的字符串,就返回并结束,如果加上g就返回全局匹配的字符串
text()方法
他是正则表达式对象中的函数
使用方法
reg.test(字符串) 判断字符串是否满足设置的条件,返回的是一个boolean值
var str2 = 'ABc56we';
var reg1 = new RegExp('abc', 'i');
console.log(reg1.test(str2))
**2>** 直接声明正则表达式对象
var reg = /匹配条件/匹配属性(可选);
此处的匹配条件和匹配属性都不加引号,也就是都不能写成字符串
var reg2 = /abc/i;
console.log(reg2.test(str2));
var str3 = 'my god!';
var reg3 = /!/;
console.log(reg3.test(str3));
var str4 = '生当作人杰';
var reg4 = /当/;
console.log(reg4.test(str4));
元字符
\n 换行符
\t 制表符
\r 回车符
\d 代表数字0-9
\D 代表非数字,也就是对\d的取反
\s 空白符(包含了 空格,换行符,制表符,回车符)
\S 代表非空白符,也就是对\s的取反
\w 代表字符(字母(a-z,A-Z),数字(0-9),下划线_)不包含汉字以及特殊字符
\W 代表非字符,对\w进行取反
. 代表了\n \r 之外的任意一个字符
量词
如果设置匹配规则的时候没有添加量词则仅仅匹配一个
* 个数 >=0 eg: \d*
+ 个数>=1 eg: \d+
? 个数只能为0个或者为1个
{n} 表示个数是n个
{n,m} 表示个数为n到m个
{1,} 表示个数>=1 等同于 +
{0,1} 表示个数为0个或者为1个 等同于?
var str5 = `私以
为鬼才`;
var reg5 = /\t/;
console.log(reg5.test(str5));
var str6 = '至今 思项羽';
var reg6 = /\s/;
console.log(reg6.test(str6));
//量词测试
var str7 = 'asdf1235343545sdf';
var reg7 = /\d{10}/;
console.log('数字'+reg7.test(str7));
var reg8 = /\d+/; //表示至少有一个数字
console.log('数字'+reg8.test(str7));
匹配字符
[ ] 匹配括号中出现的字符
[^] 表示字符串中不能出现括号内的内容,用来判断字符串中有没有除字符串以内的内容,^符号必须在开头位置,如果放在其他位置,他就是一个普通字符 eg [^\d] 等同于 \D
var txt = document.getElementById("txt");
var btn = document.getElementById("btn");
btn.onclick = function(){
var val = txt.value;
var reg = /^1[345678]\d{9}$/;
if (reg.test(val)) {
alert('是手机号');
}else{
alert('不是手机号');
}
}
var txt1 = document.getElementById("txt1");
var btn1 = document.getElementById("btn1");
btn1.onclick = function(){
var val = txt1.value;
var reg = /1[abc]{2}\d{9}/;
if (reg.test(val)) {
alert('匹配成功');
}else{
alert('匹配失败');
}
};
连字符
— 一般结合匹配字符使用
a-z:匹配小写的英文字母
A-Z:匹配小写的英文字母
0-9:匹配所有的数字
汉字的范围
\u4e00 - \u9fa5
var str9 = 'aa五星红旗aa';
var reg9 = /aa[\u4e00-\u9fa5]{2}/;
console.log('五星红旗'+reg9.test(str9));
var str10 = '12asdf45';
var reg10 = /\d+[a-z]+/;
console.log('12asdf45'+reg10.test(str10));
定位符
^ 指定字符串的开始位置
$ 指定字符串的结束位置
\b 指代字符串中 单词的边界 \b\w+\b 第一个\b代表的是单词的左边界,第二个\b代表的是单词的右边界
var str11 = '13512345678';
var reg11 = /^1[345678][0-9]{9}$/;
console.log(reg11.test(str11)?'是手机号':'不是手机号');
选择符和分组符
|:选择符
可以选择|前面或者后面的部分
(): 把括号中的内容进行分组
var str12 = 'aa王者荣耀aa';
var reg12 = /(aa|bb|cc)/;
console.log(reg12.test(str12));
var arr= ['三国演义','孙悟空大战奥特曼','sun','ring','girl','水浒传'];
var reg0 = /[\u4e00-\u9fa5]+/;
for (var i=0;i<arr.length;i++){
if (reg0.test(arr[i])) {
console.log(arr[i]);
}
}