const str = "abcdefg"
const reg = /bc/ //定义规则
console.log(reg.test(str)) //是否匹配 true
console.log(reg.exec(str)) //执行检索 返回数组
元字符
大多数的字符仅能够描述它们本身,这些字符称作普通字符,例如所有的字母和数字。也就是说普通字符只能够匹配字符串中与它们相同的字符。
元字符是一些具有特殊含义的字符,可以极大提高灵活性和强大的匹配功能。比如,规定用户只能输入26个英文字母,普通字符的话 abcdefghijk…,但是换成元字符写法:[a-z]。
在正则表达式中,“.”“*”“?”等符号都有特殊的含义,如果想匹配的就是这些符号,可使用中括号取消这些符号的特殊含义。
分类
- 边界符:表示位置,开头^和结尾$
- 量词:表示重复次数
- 字符类:比如 d 表示 0-9
符号 | 含义 |
---|---|
[A-z] | 任意字母 |
. | 任意字符 |
+ | 至少一个,相当于{1,} |
* | 0个或多个,相当于{0,} |
? | 0个或1个,相当于{0,1} |
w | 任意字母数字下划线 |
W | 除了字母数字下划线 |
d | 任意数字,相当于[0-9] |
D | 除了数字 |
s | 空格 |
S | 除了空格 |
b | 单词边界 |
B | 除了单词边界 |
字符串方法
split()
可以传递一个正则表达式作为参数。
var s = "1a2A3c4d5r6"
var result = s.split(/[A-z]/)
console.log(result)
search()
该方法只会查找第一个,即使设置全局匹配也没用。
var s = "cbcD aFc aeec app"
var result = s.search(/a[A-z]c/)
console.log(result)
match()
默认情况下match()只会找到第一个符合要求的内容,可以设置全局匹配模式(g)来匹配到所有的内容。
var s = "1c22bc3D4Fc00"
var result = s.match(/[a-z]/ig)
console.log(result)
replace()
默认情况下replace()只会替换第一个。
var s = "1c22bc3D4Fc00"
var result = s.replace(/[a-z]/gi, "")
console.log(result)
测试正则
JavaScript 中测试正则表达式的一种方法是使用 .test() 方法。.test() 方法会把编写的正则表达式和字符串(即括号内的内容)匹配,如果成功匹配到字符,则返回 true,反之,返回 false。
let myString = "Hello, World!";
let myRegex = /Hello/;
let result = myRegex.test(myString); // true
可以使用 .test 方法的“反向” .match() 方法来提取找到的实际匹配项。
"Hello, World!".match(/Hello/);
先行断言
有两种先行断言:正向先行断言(positive lookahead)和负向先行断言(negative lookahead)。
正向先行断言:pattern1(?=pattern2),pattern1只有在pattern2前面才匹配,pattern2不会被计入返回结果,比如,要匹配后面跟着百分号的数字,可以写成入/\d+(?=%)/
。
负向先行断言:pattern1(?!pattern2),pattern1只有不在pattern2前面才匹配,pattern2不会被计入返回结果,比如,要匹配后面跟的不是百分号的数字,就要写成/\d+(?!%)/
。
- 转载请保留原文链接:JavaScript正则表达式 https://aboss.top/post/180/
- 本站所有资源文章出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
- 本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户擦亮眼睛自行鉴别,做一个有主见和判断力的用户。
- 本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。
- 联系方式(#替换成@):mail#aboss.top
评论