正则表达式

本文详细介绍了正则表达式的使用,包括字符串操作方法如match、split、replace和search,以及正则表达式的各种匹配规则、元字符、限定符和特殊用法。此外,还列举了数字、字符、邮箱、URL等常见正则表达式实例,对于编程中的表单验证和数据提取非常实用。
摘要由CSDN通过智能技术生成

正则表达式

正则表达式是一个描述字符模式的对象,可以用来
检查一个串是否含有某种子串、将匹配的子串做
替换或者从某个串中取出符合某个条件的子串

字符串正则的方法

  • match
  • split
  • replace
  • search

语法

//普通方式:
var reg=/表达式/附加参数
//例:
var reg=/white/;
var reg=/white/g;
//构造函数:
var reg=new RegExp("表达式","附加参数")
var reg=new RegExp("white");
var reg=new RegExp("white","g");

正则常见的方法

test
返回一个boolean值
使用场景: 表单验证

exec
如果匹配,返回数组
如果不匹配,返回 null
使用场景: 提取满足条件的数据

匹配规则

单字符匹配

x

匹配 x

[xyz]
  1. [abc]
    匹配 a , b , c 任意一个字符

  2. [0-9]
    匹配任意一个数字

  3. [a-zA-Z]
    匹配 任意一个字母

  4. [a-zA-Z0-9-]
    匹配任意字母、数字 和 -

  5. [^0-9]
    匹配任意一个非数字

多字符匹配

  1. X*
    匹配 0个或多个 X 匹配的内容

  2. X+
    匹配 1个或多个 X 匹配的内容

  3. X?
    匹配 0个或1个 X 匹配的内容

  4. X{m}
    匹配 m个 X 匹配的内容

  5. X{m, }
    匹配 至少m个 X匹配的内容

  6. X{m, n}
    匹配 至少m个,最多n个 X匹配的内容
    PS: m <= n

元字符
  1. \d
    等价与 [0-9]

  2. \D
    等价与 [^0-9]

  3. \w
    等价与 [a-zA-Z0-9_]

  4. \W
    对 \w 取反

  5. \s
    匹配任意一个空白字符
    包括 空格、制表符、换行符等

  6. \S
    匹配任意一个非空白字符

点字符
  1. . (dot)
    匹配 除 换行 符 之外的任意一个字符

  2. \.
    匹配 一个 点

贪婪式表达式

  1. X*
    等价与 X{0,}

  2. X+
    等价与 X{1, }

  3. X?
    等价与X{0,1}

非贪婪式表达式

  1. *?
    等价与 X{0,}

  2. X+?
    等价与 X{1, }

  3. X??
    等价与X{0,1}

非贪婪式表达式、优先匹配 表达式后面的正则匹配的内容,非贪婪式表达式 尽可能少的匹配元素

限定符

^
出现在正则的头部
代表以 … 开头

$
出现在 正则的尾部
代表 以 … 结尾

选择

|
(a|b)

正则修饰符

  • i 忽略大小写

  • g 全局模式

  • s dotAll 模式

    正则表达式中 点 字符 默认匹配除 \n 之外的其他字符
    添加 s 修饰符后,可以匹配 任意字符

  • m 多行匹配模式

    如果 正则使用了限定符 ^ 或者 $,
    则 \n 会被默认认为一行的结尾
    需要匹配多行、可以添加 m 修饰符

  • y 粘连模式

常用的正则表达式表

一、数字的正则表达式
- 数字:
^[0-9]*$

- n位的数字:
^\d{n}$

- 至少n位的数字:
^\d{n,}$

- m-n位的数字:
^\d{m,n}$

- 零和非零开头的数字:
^(0|[1-9][0-9]*)$

- 非零开头的最多带两位小数的数字:
^([1-9][0-9]*)+(.[0-9]{1,2})?$

- 带1-2位小数的正数或负数:
^(\-)?\d+(\.\d{1,2})?$

- 正数、负数、和小数:
^(\-|\+)?\d+(\.\d+)?$
二、字符的正则表达式
- 汉字:\^[\u4e00-\u9fa5]{0,}$
var str = "38u48djhfod中国,@##@!_)+bia發財サービス二條한국어國家";
var reg = /[\u4e00-\u9fa5]+/g;
console.log(str.match(reg));

- 英文和数字:
^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$

- 长度为3-20的所有字符:
^.{3,20}$

- 由26个英文字母组成的字符串:
^[A-Za-z]+$

- 由26个大写英文字母组成的字符串:
^[A-Z]+$

- 由26个小写英文字母组成的字符串:
^[a-z]+$

- 由数字和26个英文字母组成的字符串:
^[A-Za-z0-9]+$

- 由数字、26个英文字母或者下划线组成的字符串:
^\w+$ 或 ^\w{3,20}$

- 中文、英文、数字包括下划线:
^[\u4E00-\u9FA5A-Za-z0-9_]+$

- 中文、英文、数字但不包括下划线等符号:
^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$

特殊需求正则表达式
- Email地址:
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

- 域名:
[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?

- URL:
[a-zA-z]+://[^\s]* 或  ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$

- 手机号码:
\^[1][3,4,5,7,8][0-9]{9}$

- 15或18位身份证:
^\d{15}|\d{18}$

- 15位身份证:
^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$

- 18位身份证:
^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$

- 短身份证号码(数字、字母x结尾):
^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$

- 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):
\^[a-zA-Z][a-zA-Z0-9_]{4,15}$

- 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):
\^[a-zA-Z]\w{5,17}$

- 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):
\^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

- 日期格式:
^\d{4}-\d{1,2}-\d{1,2}

- IP地址:
\d+\.\d+\.\d+\.\d+

其他符号 了解即可

分组(…)

(\d+)
对匹配内容进行分组

(?\d+)
命名分组
正则匹配的内容会交给 key

断言

?= 正向确定断言
示例: /\d+(?=%)/.exec(“昨天股票涨了20%,今天跌了50%,损失了8000元”)
只匹配百分号之前的数字

?! 正向否定断言
示例 :/\d{2,}(?!%)/.exec(“昨天股票涨了20%,今天跌了50%,损失了8000元”)
只匹配非百分号之前的数字

?<= 反向确定断言
示例: /(?<=$)\d+/.exec("$1 兑换 ¥6")
只匹配美元符号之后的数字

?<! 反向否定断言
示例 : /(?<!$)\d+/.exec("$1 兑换 ¥6")
只匹配不在美元符号后面的数字

各位看官留个赞再走吧!哈哈哈哈哈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值