JavaScript正则表达式

作者: 微语博客 | 来源:发表于2021-07-17 23:59 被阅读0次

正则表达式

正则表达式是由一个字符序列形成的搜索模式。当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。正则表达式可以是一个简单的字符,或一个更复杂的模式。正则表达式可用于所有文本搜索和文本替换的操作。

正则语法

/正则表达式主体/修饰符(可选)

示例说明:/hello/i 是一个正则表达式。hello 是一个正则表达式主体 (用于检索)。i 是一个修饰符 (搜索不区分大小写)。

var reg = /hello/i;

怎么使用:上面创建的字符串表达式可以用来检索字符串,比如检索下面字符串出现字符串的位置。

var reg = /hello/i;
var string = "Morning hello everyone";
console.log(string.search(reg));//8  表示出现此表达式的位置是8,从0开始。

var string = "Morning Hello everyone";//在不区分大小写模式时效果一样
console.log(string.search(reg));//8

除了查找,字符串替换也是很常见的操作,查找 search() 和替换 replace() 是字符串的两个成员方法。

var reg = /everyone/i;
var rep = "everybody";
var string = "Morning hello everyone";
console.log(string.replace(reg,rep));//Morning hello everybody

字符串的检索和替换使用子字符串也能实现,但是使用正则表达式可以让实现功能更强,比如不区分大小写。

正则表达式修饰符

下表列出了正则表达式常用的修饰符:

修饰 含义 描述
i ignore - 不区分大小写 将匹配设置为不区分大小写,搜索时不区分大小写: A 和 a 没有区别。
g global - 全局匹配 查找所有的匹配项。
m multi line - 多行匹配 使边界字符 ^$ 匹配每一行的开头和结尾,记住是多行,而不是整个字符串的开头和结尾。
s 特殊字符圆点 . 中包含换行符\n 默认情况下的圆点 . 是 匹配除换行符 \n 之外的任何字符,加上 s 修饰符之后, . 中包含换行符 \n

全局匹配

var reg = /hello/g;//全局
var string = "Morning hello everyone hello";
console.log(string.match(reg));//["hello","hello"] 返回的是字符串数组 表示检索到了多次

var reg2 = /hello/;//非全局
console.log(string.match(reg2));//["hello",8] 只返回第一个匹配字符串和它的索引

多行匹配:^表示匹配开头,下面的\n表示换行符

var reg = /^hello/g;//g表示匹配一行
var string = "hello \n everyone \nhello";
console.log(string.match(reg));//["hello"]

var reg2 = /^hello/gm;//gm表示匹配多行
console.log(string.match(reg2));//["hello","hello"]

圆点.匹配:默认情况下圆点可以匹配任何字符,但是换行符\n除外,加上s符号后圆点可以匹配换行符\n

var reg = /hello./;//默认匹配
var string = "hello\n everyone";
console.log(string.match(reg));//null 圆点没有匹配到\n

var reg = /hello./s;//匹配换行符
console.log(string.match(reg));//["hello\n"] 匹配换行符

正则表达式模式

正则表达式最强大的地方是可以通过模式匹配,通过特定的正则表达式模式,我们可以很容易判断一个数字是不是电话号码,验证一个邮箱是否合法,以及验证url格式等。

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

表达式 描述
[abc] 查找方括号之间的任何字符。
[0-9] 查找任何从 0 至 9 的数字。
(x|y) 查找任何以|分隔的选项。

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

元字符 描述
\d 查找数字。
\s 查找空白字符。
\b 匹配单词边界。
\uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。

量词:

量词 描述
n+ 匹配任何包含至少一个 n 的字符串。
n* 匹配任何包含零个或多个 n 的字符串。
n? 匹配任何包含零个或一个 n 的字符串。

相关文章

网友评论

    本文标题:JavaScript正则表达式

    本文链接:https://www.haomeiwen.com/subject/qvigpltx.html