关于正则表达式中 “^” ,“$”,“g”的用法与作用

博客介绍了正则表达式中特殊字符的含义。^ 在字符串中表示匹配开始位置,在中括号里表示不匹配某字符集合;g 用于替换字符串中每个被匹配字符,否则只替换第一个;$ 表示匹配末尾位置。

 在正则表达式中 ^ 表示匹配字符串的开始位置

// 输出结果为 2a21:只有字符串开始位置的'1'被匹配到,但'a'后面的'21'没有匹配到
'12a21'.replace(/^\d/g,'')  // 字符串中开头的一组空字符替换为""
// 输出结果为 "222a21" :字符串开始位置的'12'被匹配到,但'a'后的'21'两位数字没有匹配到
'12222a21'.replace(/^\d{2}/g,'')
// 输出结果为 "a21":字符串开始位置的数字都被匹配到,但'a'后面的'21'没有匹配到
'12222a21'.replace(/^\d{2,}/g,'') // 从字符串开头开始匹配数量大于等于2个的数字
// 输出结果为 "a" :字符串中所有的数字都被匹配到
'12222a21'.replace(/\d{2,}/g,'')

但是,当 ^ 在中括号中时,不在表示匹配开始位置,而是表示不匹配某字符集合

// 输出结果为:"1222221":非数字的所有字符都被匹配
'122ss22a2b1'.replace(/[^\d]/g,'')

  在正则中g表示替换字符串中每个被匹配的字符,否则只替换字符串中第一个被匹配的字符

// 输出结果为:"2222a21" :只有第一个数字被替换
'12222a21'.replace(/[\d]/,'')
// 输出结果为:"a":字符串中所有的数字都会被匹配到,然后被替换
'12222a21'.replace(/[\d]/g,'')

  在正则中 $ 表示匹配末尾位置

// 输出结果为:"12222a2":只有末尾的1匹配
'12222a21'.replace(/[\d]$/g,'')
// 输出结果为:"12222a" :末尾所有被匹配
'12222a21'.replace(/[\d]{1,}$/g,'')

✔ 相关参考:【JS高级】正则入门基础—关于你想知道的正则表达式 

### 含义 正则表达式 `[^5]` 是一个字符类,其中 `^` 在方括号 `[]` 内使用时,表示取反的意思,即匹配指定范围外的任意单个字符。所以 `[^5]` 表示匹配除了字符 `5` 之外的任意单个字符[^3]。 ### 用法 `[^5]` 可以用于各种需要排除特定字符的场景,例如数据验证、文本过滤等。当需要查找或替换除了某个特定字符之外的其他字符时,可以使用该正则表达式。 ### 示例 #### Python 示例 ```python import re text = "123456789" matches = re.findall(r'[^5]', text) print(matches) ``` 在这个 Python 示例中,使用 `re.findall` 函数查找字符串 `text` 中所有匹配 `[^5]` 的字符,并将结果存储在 `matches` 列表中。 #### JavaScript 示例 ```javascript const text = "123456789"; const matches = text.match(/[^5]/g); console.log(matches); ``` 在这个 JavaScript 示例中,使用 `match` 方法和正则表达式 `/[^5]/g` 查找字符串 `text` 中所有匹配 `[^5]` 的字符,并将结果存储在 `matches` 数组中。 #### Java 示例 ```java import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String text = "123456789"; Pattern pattern = Pattern.compile("[^5]"); Matcher matcher = pattern.matcher(text); while (matcher.find()) { System.out.println(matcher.group()); } } } ``` 在这个 Java 示例中,使用 `Pattern` 和 `Matcher` 类来查找字符串 `text` 中所有匹配 `[^5]` 的字符,并将匹配结果逐个输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

儒雅的烤地瓜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值