14 JS之RegExp对象(正则对象)

542次阅读
没有评论

共计 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。

正文完
 
shawn
版权声明:本站原创文章,由 shawn 2023-06-16发表,共计995字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)