正则表达式的作用:匹配合适的文本
可以用来判断字符串是否合规,替换特定格式字符,提取子字符串,判断是否包含字串,过滤字符串
js中的正则使用
var regexp_1 = /a/; // 常用
var regexp_2 = new Regexp("a");
<script>
function demo() {
var regexp_1 = /a/;
var str = 'abc'
if (regexp_1.test(str)){ // 可以用作判断字符串是否合规
alert(regexp_1.test(str)) // test() 对传入字符串进行匹配
} else {
alert("no match")
}
}
demo()
</script>
匹配规则
var regexp_1 = /a/i; // 匹配时忽略大小写
var regexp_2 = /a/g; // 执行全局匹配(匹配全句,而不是匹配到一个就返回)
// 理解: 是匹配到符合一个就够,还是想把所有符合的都匹配出来,而且还不能替代多行
var regexp_3 = /a/m; // 多行匹配
var regexp_4 = new Regexp("a","i");
var regexp_5 = new Regexp("a","g");
var regexp_6 = new Regexp("a","m");
var regexp_7 = new Regexp("a","igm");
var regexp_8 = /a/igm; // 多种模式一起使用
输出索引
function demo() {
var regexp = /s/g
var str = 's_s_s_s_s_s_s_s'
regexp.test(str)
console.log(regexp.lastIndex) // 输出结果是索引 -1
regexp.test(str)
console.log(regexp.lastIndex)
}
demo()
子表达是匹配
var str = 'st_s_s_s_s_s_s_s'
var regexp = /s(t)(_)/ // 先匹配一下st_,匹配到之后再匹配一下里面的 t 和 _
// 只有整体匹配成功,后面的子字符串匹配才会被执行匹配
表达式方法
// test() Methode
var regexp = /xxx/
var str = 'xxx'
var boolean_value = regexp.test(regexp) // test() 方法返回bool类型,是否匹配到值
// exec() Method
// 当整句匹配失败时,会返回一个null的空数组
// 否则,返回:
// 数组的第0个元素存储的是整句匹配到的字符串
// 第1个元素存放的是第一个引用型分组(子表达式)匹配的字符串
// 第2个元素存放的是第二个引用型分组(子表达式)匹配的字符串,依次类推。
var str = 'st_s_s_st_s_s_s_s'
var regexp = /s(t)(_)/ // 先匹配一下st_,匹配到之后再匹配一下里面的 t 和 _
console.log(regexp.exec(str))
// 输出:
// [
// 'st_', // 整句匹配结果,如果这个都匹配不到就会返回 null 就没有下面的了
// 't', // 第一个子表达式匹配结果
// '_', // 第二个子表达式匹配结果
// index: 0,
// input: 'st_s_s_st_s_s_s_s',
// groups: undefined
// ]
// 文章说只能写2个字串,但是经过我的测试可以放多个字串请一起匹配