正则表达式
主要是用来描述、匹配字符串的规则(公式)。
作用
字符串的替换和 匹配
使用
- 创建一个正则表达式
方法一
var patt = new RegExp(pattern, modifiers);
// 括号内 前面为表达式 后面为修饰符
//表达式用来定义搜索条件
//修饰符用来限定搜索规则
方法二
var patt = /pattern/modifiers;
// 同上 /.../内为正则表达式 后面是修饰符
修饰符
正则表达式有六个可选参数 (flags) 允许全局和不分大小写搜索等。这些参数既可以单独使用也能以任意顺序一起使用, 并且被包含在正则表达式实例中。
修饰符 | 描述 |
---|---|
i | 执行对大小写不敏感的匹配 |
g | 执行全局匹配(查找所有的匹配项,而非在找到第一个匹配项后停止) |
m | 执行多行匹配 |
s | 允许使用.匹配换行符 |
u | 使用 Unicode 码的模式进行匹配 |
y | 执行“粘性”搜索,匹配从目标字符串的当前位置开始 |
修饰符的使用
let str = "HELLO World"
alert(str.match(/o/)) // o
alert(str.match(/o/i)) // O
alert(str.match(/o/ig)) // O,o
限定符(量词)
限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配
字符 | 描述 |
---|---|
n+ | 匹配任何包含至少一个 n 的字符串。 |
n* | 匹配任何包含零个或多个 n 的字符串。 |
n? | 匹配任何包含零个或一个 n 的字符串。 |
n{X} | 匹配包含 X 个 n 的序列的字符串。 |
n{X,Y} | 匹配包含 X 至 Y 个 n 的序列的字符串。 |
n{X,} | 匹配包含至少 X 个 n 的序列的字符串。 |
n$ | 匹配任何结尾为 n 的字符串。 |
^n | 匹配任何开头为 n 的字符串。 |
?=n | 匹配任何其后紧接指定字符串 n 的字符串。 |
?!n | 匹配任何其后没有紧接指定字符串 n 的字符串。 |
在n{X,Y}中,n表示待匹配的项,可以是一个字符或一个整体,X为0或者正整数,Y为正整数,且Y>X。
- 例子
let str = ["00000abcdccccc","123456","00000000","0qwesda00"]
let reg = /0*/
let arr = new Array
str.map(item => {
if(reg.test(item)){
arr.push(item)
}
})
alert(arr)
// let reg = /0*/ 00000abcdccccc,123456,00000000,0qwesda00
// let reg = /000+/ 00000abcdccccc,aa00000000
// let reg = /0{5,}/ "00000abcdccccc","00000000"
- 扩展: 非贪婪的匹配
一般情况下正则表达式都是进可能多的去匹配,在后面添加 ?
就是尽可能少的匹配(惰性匹配)
let str = "000000000000000000"
str.match(/0+/) //000000000000000000
str.match(/0+?/) //0
反斜杠(/
)
- 特殊字符前用 表示用字符本身
- 非特殊字符前用 表示字符为特殊字符
- 场景:输入名称只能是 五个汉字 或 10个英文字母 可以混用
^[\u4e00-\u9fa5a-zA-Z]{5,10}$
网友评论