共计 995 个字符,预计需要花费 3 分钟才能阅读完成。
常用匹配模式
-
g (全局匹配, 找到所有匹配,而不是在第一个匹配后停止)
-
i (忽略大小写)
注意
- 正则放到引号内
- {} 内的逗号后面不要加空格
// 创建正则对象方式 1
var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$");
// 匹配用户名只能是英文字母、数字和_,并且首字母必须是英文字母, 长度最短不能少于 6 位, 最长不能超过 12 位。reg1.test("shawn_1111") // true
// 创建正则对象的方式 2
var reg2 = /^[a-zA-Z][a-zA-Z0-9_]{5, 11}$/; // 不要加引号
reg2.test("shawn_11111") // true
// String 对象与正则结合的 4 个方法
var s1 = "hello world";
s1.match(/l/g) // 符合正则的内容 ["l", "l", "l"]
s1.search(/h/g) // 符合正则的内容的索引 0
s1.split(/ /) // ["hello", "world"]
s1.replace(/l/ g,'L') // "heLLo worLd"
// 匹配模式 g 与 i
var s2 = "name:shawn age:18"
s2.replace(/e/, " 赢 ") // "nam 赢:shawn age:18"
s2.replace(/e/g, " 赢 ") // "nam 赢:shawn ag 赢:18"
s2.replace(/e/gi, " 赢 ") // "nam 赢: 赢 hawn ag 赢:18"
注意 :
1、如果 regExpObject 带有全局标志 g,test() 函数不是从字符串的开头开始查找,而是从属性 regExpObject.lastIndex 所指定的索引处开始查找。
2、该属性值默认为 0,所以第一次仍然是从字符串的开头查找。
3、当找到一个匹配时,test() 函数会将 regExpObject.lastIndex 的值改为字符串中本次匹配内容的最后一个字符的下一个索引位置。
4、当再次执行 test() 函数时,将会从该索引位置处开始查找,从而找到下一个匹配。
5、因此,当我们使用 test() 函数执行了一次匹配之后,如果想要重新使用 test() 函数从头开始查找,则需要手动将 regExpObject.lastIndex 的值重置为 0。
6、如果 test() 函数再也找不到可以匹配的文本时,该函数会自动把 regExpObject.lastIndex 属性重置为 0。
正文完