1

JavaScript RegExp 对象

RegExp:是正则表达式(regular expression)的简写
正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具

语法:

var patt=new RegExp(pattern,modifiers);

或者

var patt=/pattern/modifiers;

其中:
pattern:代表正则表达式
modifiers:代表修饰符

修饰符:

i    执行对大小写不敏感的匹配。
g    执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m    执行多行匹配。

案例(匹配hello、忽略大小写):

var str = "HELLO world!";
var patt1 = /hello/i;
document.write(str.match(patt1));

输出:

HELLO

注意:当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)。如,匹配\w时需要加\,以下是等价的:

// +表示匹配一次或多次
var re = new RegExp("\\w+");
var re = /\w+/;

方括号
用于查找某个范围内的字符:

[abc]     查找方括号之间的任何字符。
[^abc]    查找任何不在方括号之间的字符。
[0-9]     查找任何从 0 至 9 的数字。
[a-z]     查找任何从小写 a 到小写 z 的字符。
[A-Z]     查找任何从大写 A 到大写 Z 的字符。
[A-z]     查找任何从大写 A 到小写 z 的字符。
[adgk]    查找给定集合内的任何字符。
[^adgk]   查找给定集合外的任何字符。

元字符
拥有特殊含义的字符

.    查找单个字符,除了换行和行结束符。
\w    查找数字、字母及下划线。
\W    查找非单词字符。
\d    查找数字。
\D    查找非数字字符。
\s    查找空白字符。
\S    查找非空白字符。
\b    匹配单词边界。
\B    匹配非单词边界。
\0    查找 NULL 字符。
\n    查找换行符。
\f    查找换页符。
\r    查找回车符。
\t    查找制表符。
\v    查找垂直制表符。

量词
定义正则匹配的次数

?      匹配0次或1次
+      匹配1次或多次
*      匹配0次或多次
{n}    匹配n次
{n,}   匹配n次或n次以上
{n,m}  匹配n次到m次

RegExp 对象方法

  • test()
    搜索字符串指定的值,根据结果返回true或false

      var patt1=new RegExp("a");
      document.write(patt1.test("abc"));

    输出:

      true
    
  • exec()
    检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null

      var patt1=new RegExp("a");
      document.write(patt1.exec("abc"));

    输出:

      a
    
  • toString()
    返回正则表达式的字符串

      var patt = new RegExp("RUNOOB", "g");
      var res = patt.toString();
      document.write(res);

    输出:

      /RUNOOB/g
    

支持正则表达式的 String 对象的方法

  • search()
    检索匹配正则表达式的值的个数

      var str="Visit Runoob!"; 
      var n=str.search("Runoob");
      document.write(n);

    输出:

      6
    
  • match()
    匹配满足正则表达式的值,如果没有找到任何匹配的文本,返回 null。否则,它将返回一个数组

      var str="abcabcdabcde"; 
      var n=str.match(/abc/g);
      document.write(n);

    输出:

      [abc,abc,abc]
  • replace()
    替换与正则表达式匹配的子串。

      var str="hello world!";
      var n=str.replace("hello","你好");
      document.write(n);

    输出:

      你好 world!
  • split()
    把字符串分割为字符串数组。

      var str="2022-1-1";
      var n=str.split("-");
      document.write(n);

    输出:

      [2022,1,1]

wasdquiop
7 声望4 粉丝