JS RegExp

JavaScript正则表达式与JS里其它多种数据结构一样,可以用两种方式来表达,一种是使用RegExp()构造函数new出来一个新的表达式对象,另一种是直接使用字面量来表示。即var pattern = new RegExp("s$"); 与 var pattern = /s$/; 两种形式。

正则表达式里有特殊意义的字符: ^ $ . * + ? = ! : | \ / ( ) [ ] { }

正则表达式的标志位有: i , g , m (i 表示大小写敏感的匹配,g表示全局匹配即不只是匹配到第一个符合的结果而是匹配所有的结果, m表示多行模式即不只匹配一行而是全文)。使用方法为:/s$/g或RegExp("s$","g")。

正则表达式中字符类集意义:

\w 匹配所有ASCII字符集合,相当于[a-zA-Z0-9]。

\W 匹配所有不属于\w集合中的字符,相当于[^a-zA-Z0-9]。

\s 匹配所有Unicode空白字符。

\S 匹配所有不是Unicode空白字符。

\d 匹配所有ASCII数字,相当于[0-9]。

\D 匹配所有不是ASCII数字的字符,相当于[^0-9]。

\o 匹配NUL字符。

\t 匹配tab制表符。

\n 匹配新的一行。

\v 匹配vtab垂直制表符。

\f 匹配换页符。

\r 匹配回车符。

\b 匹配位于单词的开头或结尾的匹配。如/\bis\b/匹配单个单词is而不会匹配this这个单词。

\B 匹配不是一个单词边界,如/\Bis/会匹配this中的is而不会匹配is这个单词。

\x nn 匹配十六进制拉丁字符。

\u xxxx 匹配十六进制Unicode字符。

\c X 匹配控制字符。

正则表达式中特殊字符意义:

^ 匹配字符串或行的开始。

$ 匹配字符串或行的末尾。

? 匹配关键词出现0次或1次,相当于{0,1}。其还可用于非贪婪匹配中,匹配最少可以匹配的项。如/a+b/会匹配aaab,但/a+?b/只会匹配到ab。

. 匹配任意字符除了换行和行结束符。

* 匹配关键词的出现0次或多次。相当于{0,}。

+ 匹配关键词的出现为1次或多次,相当于{1,}。

= 多用于 ?=p 这样的表达式中,这个表达式的意义为必须匹配关键词p的元素。

! 多用于 ?!p 这样的表达式中,这个表达式的意义为必须匹配没有关键词p的元素。

: 用于(?:p)这样的表达式中,以关键词p来分组。

| 相当于或,匹配符号左边或右边的表达式。

\ 转义符号,用来将特殊字符转换为一般匹配字符或将一般字符转换为特殊匹配字符。

/ 正则表达式开始与结束的标志。

() 用来分组匹配表达式,可以用\加数字来引用分组。

[] 对匹配表达式进行分类,[]属于其中或[^]不属于其中。

{} 重复重次,{n,m}至少有n次至多有m次。{n,}至少有n次无上限,{n}出现n次。

JavaScript 中的正则表达式 (`RegExp`) 是用于匹配字符串中字符模式的对象。它可以帮助开发者快速检查、提取或替换符合特定规则的文本内容。以下是关于 JavaScript 正则表达式的几个关键点: ### 创建正则表达式 有两种方式来创建一个正则表达式对象: 1. **字面量语法**:直接将模式放在斜杠之间,例如 `/pattern/flags`。 2. **构造函数**:使用 `new RegExp("pattern", "flags")` 形式。 其中,“pattern”是你想要匹配的模式,“flags”则是可选标志位,比如: - `i`: 忽略大小写的匹配; - `g`: 全局匹配(即寻找所有匹配而非在第一个成功匹配后停止); - `m`: 多行模式下处理输入。 示例: ```javascript let regexLiteral = /hello/i; // 字面量形式创建正则表达式 let regexConstructor = new RegExp('world', 'gi'); // 构造函数形式创建正则表达式 ``` ### 测试匹配 常用的方法包括: - `.test(str)`:测试给定字符串是否包含该正则表达式所描述的内容,并返回布尔值。 ```javascript console.log(/abc/.test('xyz abc')); // true ``` - `.match(regexp)` 和 `.exec()`:前者会尝试在整个字符串上进行一次性的全局搜索;后者会在每次调用时返回下一个匹配项直到无更多结果为止。 ```javascript let str = "The rain in SPAIN stays mainly in the plain"; console.log(str.match(/ain/g)); // ["ain", "ain", "ain"] let re = /ain/g; while ((result = re.exec(str)) !== null) { console.log(`Found ${result[0]} at position ${result.index}`); } ``` 此外还有`.replace()`, `.split()`, 等等可以根据实际需求选用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值