正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
一、正则声明
- 语法:
/正则表达式主体/修饰符(可选)
修饰符:用于执行不区分大小写和全文的搜索
i
:修饰符是用来执行不区分大小写的匹配。
g
:修饰符是用来执行全文的搜索(而不是在找到第一个就停止查找,而是找到所有的匹配) - 声明格式:
new RegExp(pattern, attributes);
var reg2 = /hello/gi;
pattern
: 为表示表达式内容
attributes
:g,全局匹配,i不区分大小写,m执行多行匹配,用最多的为g和i<script type="text/javascript"> var reg = new RegExp('hello','gi'); var reg = /hello/gi; </script>
- 使用字符串方法
在 JavaScript 中,正则表达式通常用于三个字符串方法 : search() ,replace(),replace()。
search(regexp)
匹配字符串,并返回子串的起始位置
。
replace(regexp,str)
敏感词过滤 第一个参数需要替换掉文字的正则,第二个参数换成的文字。
match(regexp)
获取匹配规则相符的值。返回一个数组
//定义正则
var reg = /hello/gi;
//验证的字符串
var str = " world hello world! Hello kitty!";
console.log(str.search(reg));// 输出 : 7
console.log(str.match(reg)); // 输出 :Array [ "hello", "Hello" ]
console.log(str.replace(reg,'你好'));//输出: world 你好 world! 你好 kitty!
二、匹配规则
- 任意字符获取
//验证: [abc]中可以有一个字可以有多个字,中间为g,最后一个为[efg]任意字符
var reg = /[abc]+g[efg]/g;
var str = "abge bsc oat obt bgg cge";
document.write(str.match(reg));//取出规则相符的字符串结果输出 : abge,bgg,cge
-
范围正则
匹配验证
test()检索字符串是否符合正则规则,返回布尔值
^
表示匹配数据开始
$
表示匹配数据结束
*
表示匹配数据0次或多次
+
表示匹配数据1次或多次
?
表示匹配数据0次或1次{n}|{n,}|{n,m} 精确匹配n次,匹配n次以及以上,匹配n-m次
//验证字符串是否符合正则规则,test() 符合为true ,不符合为 false
//下面中间线是或的关系
var reg = /[a-z]|[0-9]/g;
var str = "jack";
document.write(reg.test(str));//true
//下面正则含义:必须为小写字母和数字组成
var reg = /[a-z][0-9]/g;
var str = "jack";
document.write(reg.test(str));//false
- exec 用法
检索字符串中的指定值,找到则返回当前值、索引、输入值,找不到返回null
var reg = /[a-z]|[0-9]/g;
var str = "jack";
document.write(reg.exec(str)); // 输出 : j
- 量词的使用
{6,16} 至少六位,最多16位
{1,} 至少1位 最多任意次 +
{0,1} 可有可元 ?
{6} 正好是六位
{1,}
* 任意次
^ 行首 匹配输入字符串的开始位置。
$ 行尾 匹配输入字符串的结尾位置。
要匹配 "^" 字符本身,请使用转义字符 "\^"
要匹配 "$" 字符本身,请使用转义字符 "\$"