学堂 学堂 学堂公众号手机端

javascript - javaScript正则表达式

lewis 1年前 (2024-04-03) 阅读数 6 #技术
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]
版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门