正则表达式
两种定义方式:
1、new 对象创建
语法:var 变量 = new RegExp(“正则表达式”,“匹配模式”)
<script type="text/javascript">
window.onload = function(){
var reg = new RegExp("a","i");
var str = "babc";
document.write(reg.test(str)); //true
var str2 = "bbc";
document.write(reg.test(str2)); //false
var str3 = "Abb";
document.write(reg.test(str3)); //true
}
</script>
- "i" 是忽略大小写比较
- "g" 是全局匹配模式
- "ig" 全局匹配同时忽略大小写
例子:
1.检查一个字符串中是否有a 或者 b
// 检查一个字符串中是否有a 或者 b
var reg = /a|b/ ;
var str1 = "dfdf";
document.write(reg.test(str1)); //false
var str2 = "adfdf";
document.write(reg.test(str2)); //true
2.检查一个字符串中是否有字母([] 表示或 [ab] = a|b)
//检查一个字符串中是否有字母
//[] 表示或 [ab] = a|b
var reg = /[a-zA-Z]/;
var str1 = "34343";
document.write(reg.test(str1)); //false
var str2 = "d34e3";
document.write(reg.test(str2)); //true
var str3 = "ASDFF";
document.write(reg.test(str3)); //true
3.检查一个字符串中是否有 abc ,adc,或,aec
// 检查一个字符串中是否有 abc ,adc,或,aec
var reg = /a[bde]c/;
var str1 = "dfabcd";
document.write(reg.test(str1)); //true
var str2 = "efebaec";
document.write(reg.test(str2)); //true
var str3 = "eeeadc";
document.write(reg.test(str3)); //true
var str4 = "abadaee";
document.write(reg.test(str4)); //false
4.判断一个字符串是否不仅仅包括a和b
//判断一个字符串是否不仅仅包括a和b
//[^ab]表示除了ab,全由ab构成则返回 false
var reg = /[^ab]/;
var str1 = "a";
document.write(reg.test(str1)); //false
var str2 = "b";
document.write(reg.test(str2)); //false
var str3 = "ab";
document.write(reg.test(str3)); //false
var str4 = "fdfdfdf";
document.write(reg.test(str4)); //false
5、判断一个字符串是否全为数字
// 判断一个字符串是否全为数字
var reg = /[^0-9]/;
var str1 = "3fee";
document.write(reg.test(str1)); //true
var str2 = "dfdfd";
document.write(reg.test(str2)); //true
var str3 = "330434";
document.write(reg.test(str3)); //false
字符串和正则的相关方法
按小写字母拆分字符串为数组
//按小写字母拆分字符串
var str = "1a2b3c4d5e6f7g8h9i0z";
var result = str.split(/[a-z]/);
document.write(result); //1,2,3,4,5,6,7,8,9,0,
会将小写字母换成‘,’字符
search:检索与正则表达式相关的内容索引,不等全局指定
//返回第一次出现的索引,没有返回-1
var str = "hello abc hello abc abd";
var result = str.search("abc");
document.write(result); //6
var str2 = "ni shi zhu ma ?"
var result2 = str2.search("heng");
document.write(result2); //-1
match:找到符合条件的内容,封装发哦数组中返回
// 找到符合条件的内容
var str = "1a2b3c4d5E6F7g8h9i0z";
var result = str.match(/[a=z]/);
document.write(result); //a
result = str.match(/[a-z]/g); //a,b,c,d,.g.h.i,z
document.write(result);
result = str.match(/[a-z]/gi); //a,b,c,d,E,F,g,h,i,z
document.write(result);
replace:将字符串中指定的内容换成新的内容
参数(1)被替内容 (2)新的内容(可正则)
//将字符串中指定的内容换成新的内容
var str = "1a2b3c4d5e6f7g8h9i0j";
var result = str.replace(/[a]/gi,"@_@");
document.write(result); //1@_@2b3c4d5e6f7g8h9i0j
result = str.repeat(/[a-z]/g,"");
document.write(result); //1234567890
其他正则基础
{}:设置出现的次数,仅对前面一个内容起作用
- 是否含有 aaa --------reg = /a{3}/
- 是否含有 ababab ----reg=/(ab){3}/
- 是否含有ab,出现1-3次--reg = /(ab){1,3}/
- + 表示至少一个 -------{1,}
- * 表示0个或者多个 ----{0,}
- ? 表示0个或者1个------{0,1}
- 检查是否以 a 开头------reg = /^a/
- 检查是否以 a 结尾------reg = /a$/
- 任意字符---------------reg = /./
- 检查是否有'\' ---------reg = /\\/
- \w ----------代表任意字母、数字、下划线
- \W ----------代表除了字母数字下划线的东西
- \d ----------代表任意数字,即[0-9]
- \D ----------代表除了数字,即[^0-9]
- \s ----------代表空格
- \S ----------代表除了空格
- \b ----------代表单词边界
- \B ----------代表除了单词边界
练习
// 找出一句话中是否有单词 child
var reg = /\bchild\b/;
var str = "fdafj child"
document.write(reg.test(str)); //true
// 找出一句话中是否有单词 child
var reg = /\bchild\b/;
var str = "fdafjchild"
document.write(reg.test(str)); //false,单词没独立
// 去掉字符串中的空格
var str = " hello ";
document.write(str.length); //16
str = str.replace(/\s/g,"");
document.write(str.length); //5
//去掉开头的空格
var str = " hello ";
document.write(str.length); //9
str = str.replace(/^\s*/g,"")
document.write(str.length) //6
//去掉尾部的空格
var str = " hello ";
document.write(str.length); //9
str = str.replace(/\s*$/g,"")
document.write(str.length) //8
//去掉两侧空格
var str = " hello ";
document.write(str.length); //9
str = str.replace(/^\s*|\s*$/g,"")
document.write(str.length) //5