首页 代码 正文

JavaScript正则表达式

2023.8.2 代码 151
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+(?!%)/

  1. 转载请保留原文链接:JavaScript正则表达式 https://aboss.top/post/180/
  2. 本站所有资源文章出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
  3. 本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户擦亮眼睛自行鉴别,做一个有主见和判断力的用户。
  4. 本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。
  5. 联系方式(#替换成@):mail#aboss.top

评论

热门搜索