66JS(正则表达式)

1. 正则表达式基础

  • 定义:用于描述、匹配字符串模式的表达式

  • 作用:文本搜索、替换、验证和提取

  • 语法/pattern/modifiers

2. 正则表达式构成

组成部分说明示例
定界符通常使用//abc/
元字符特殊含义的字符. * + ? ^ $
模式修正符匹配模式修饰i g m

3. 元字符分类

原子筛选方式

元字符描述示例
[abc]匹配方括号内任意字符[aeiou] 匹配元音字母
[^abc]匹配不在方括号内的字符[^0-9] 匹配非数字
[a-z]匹配范围内的字符[0-9] 匹配数字
`xy`匹配x或y

原子集合(预定义字符类)

元字符描述等价于
.匹配除换行符外任意字符-
\d匹配数字[0-9]
\D匹配非数字[^0-9]
\s匹配空白字符[ \t\n\r\f\v]
\S匹配非空白字符[^ \t\n\r\f\v]
\w匹配单词字符[a-zA-Z0-9_]
\W匹配非单词字符[^a-zA-Z0-9_]

原子数量限定

元字符描述示例
{n}匹配恰好n次\d{3} 匹配3位数字
{n,}匹配至少n次\d{2,} 匹配至少2位数字
{n,m}匹配n到m次\d{2,4} 匹配2-4位数字
*匹配0次或多次a* 匹配0个或多个a
+匹配1次或多次a+ 匹配1个或多个a
?匹配0次或1次a? 匹配0个或1个a

边界控制

元字符描述示例
^匹配字符串开始^abc 匹配以abc开头的字符串
$匹配字符串结束xyz$ 匹配以xyz结尾的字符串
\b匹配单词边界\bword\b 匹配独立单词word
\B匹配非单词边界\Bword\B 匹配非独立单词word

4. 模式修正符

修饰符描述
i不区分大小写匹配
g全局匹配(查找所有匹配)
m多行匹配

5. 常用正则表达式示例

用途正则表达式
非空验证/\S+/
邮箱验证/[\w-]+@([\w-]+\.)+[a-zA-Z]{2,}/
手机号验证/^1[3-9]\d{9}$/
URL验证/^https?:\/\/([\w-]+\.)+\S+$/
汉字匹配/[\u4e00-\u9fa5]/
日期格式/\d{4}[-/.]\d{1,2}[-/.]\d{1,2}/
身份证号/\d{15}(\d{2}[0-9X])?/
用户名/^[a-zA-Z]\w{5,17}$/

6. JavaScript正则方法

RegExp对象方法

方法描述示例
test()检测是否匹配/\d+/.test("123") → true
exec()执行匹配搜索/\d+/.exec("abc123") → ["123"]

String对象方法

方法描述示例
match()查找匹配"123abc".match(/\d+/) → ["123"]
replace()替换匹配"abc".replace(/a/, "A") → "Abc"
search()搜索匹配位置"abc".search(/b/) → 1
split()按模式分割"a,b,c".split(/,/) → ["a","b","c"]

7. 高级技巧

  • 贪婪匹配:默认尽可能多匹配(.+

  • 非贪婪匹配:尽可能少匹配(.+?

  • 分组捕获:使用()捕获匹配内容

  • 反向引用:使用\1引用第一个分组

8. 实用示例

// 手机号验证
function validatePhone(phone) {
    return /^1[3-9]\d{9}$/.test(phone);
}

// 提取所有数字
function extractNumbers(text) {
    return text.match(/\d+/g) || [];
}

// 邮箱验证
function validateEmail(email) {
    return /^[\w-]+@([\w-]+\.)+[a-zA-Z]{2,}$/.test(email);
}

// 替换日期格式
function formatDate(dateStr) {
    return dateStr.replace(/(\d{4})-(\d{2})-(\d{2})/, "$1年$2月$3日");
}


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值