js正则表达式详解与常用代码讲解

javascript正则表达式真是学了又忘忘了又学,今天好好梳理一下语法,本文附有十来个常见的匹配正则表达式代码示例与讲解,但是这种写正则的事情以后还是丢给chat哥吧

正则表达式语法

var reg = new RegExp('正则表达式','修饰符');
let expression = /pattern/flags

pattern 可以是任何简单或复杂的正则表达式, 每个正则表达式可以带0个或多个flags
这些flags可以是:

  • i: ignoreCase, 匹配忽视大小写
  • m: multiline , 多行匹配
  • g: 全局匹配,即在目标字符串中按顺序找到满足匹配模式的所有子串
let pattern1 = /at/g
//匹配字符串中的所有‘at’
let pattern1 = /at/i
//匹配字符串中的所有‘at’,忽略大小写
  • 横向模糊匹配:{m,n},表示连续出现最少m次,最多n次。比如/ab{2,5}c/表示匹配这样一个字符串:第一个字符是“a”,接下来是2到5个字符“b”,最后是字符“c”。
  • 纵向模糊匹配:[abc],表示该字符是可以字符“a”、“b”、“c”中的任何一个。比如/a[123]b/可以匹配如下三种字符串:“a1b”、“a2b”、“a3b”。
  • 范围表示法:-,比如[123456abcdefGHIJKLM],可以写成[1-6a-fG-M]。用连字符-来省略和简写。
  • 排除字符组:,[abc],表示是一个除"a"、“b”、"c"之外的任意一个字符。
  • 简写
    -\d就是[0-9]。表示是一位数字。记忆方式:其英文是digit(数字)。
    \D就是[^0-9]。表示除数字外的任意字符。
    \w就是[0-9a-zA-Z_]。表示数字、大小写字母和下划线。记忆方式:w是word的简写,也称单词字符。
    \W是[^0-9a-zA-Z_]。非单词字符。
    \s是[ \t\v\n\r\f]。表示空白符,包括空格、水平制表符、垂直制表符、换行符、回车符、换页符。记忆方式:s是space character的首字母。
    \S是[^ \t\v\n\r\f]。 非空白符。
    .就是[^\n\r\u2028\u2029]。通配符,表示几乎任意字符。换行符、回车符、行分隔符和段分隔符除外。记忆方式:想想省略号…中的每个点,都可以理解成占位符,表示任何类似的东西
  • 量词
    {m,} 表示至少出现m次。
    {m} 等价于{m,m},表示出现m次。
    ?等价于{0,1},表示出现或者不出现。惰性匹配:量词后面加?
    +等价于{1,},表示出现至少一次。
    *等价于{0,},表示出现任意次,有可能不出现。
  • 分支结构:|:要匹配"good"和"nice"可以使用/good|nice/,惰性
  • \b是单词边界,具体就是\w和\W之间的位置,也包括\w和^之间的位置,也包括\w和$之间的位置。
  • ^(脱字符)匹配开头,在多行匹配中匹配行开头。
  • $(美元符号)匹配结尾,在多行匹配中匹配行结尾。
  • (?=p),其中p是一个子模式,即p前面的位置。
  • (?!p)就是(?=p)的反面意思

正则默认是贪婪匹配,也就是匹配能匹配到的最长的字符串,如
/<.+>匹配<span><br>this</b></span>,会匹配到<span><br>this</b></span>这整个字符串,我们可以用?来改成懒惰匹配,尽可能少的匹配字符,匹配结果为<span>,<br>,</br>,</span>

代码示例

整数或者最多两位小数

^[0-9]+\.{0,1}[0-9]{0,2}$ 

^:模式匹配从字符串的起始位置开始
[0-9] 表示匹配数字(0 到 9)。
+等价于{1,},表示出现至少一次。
因此,^[0-9]+的意思为,匹配整数部分,字符串的开头必须由至少一个整数组成

\为转义字符,因为点号在正则表达式中有特殊含义。
{0,1}的意思为出现0或1次
.{0,1}表示匹配零个或一个点号(小数点)

[0-9]{0,2}$ 意为在字符串的结尾部分匹配零个到两个数字(0 到 9)。

只能输入数字

^[0-9]*$

* 表示匹配零个或多个

只能输入n位的数字

^\d{n}$

{n}只能出现n次

只能输入至少n位的数字

^\d{n,}$

{n,}至少出现n次

只能输入非零的正整数

^\+?[1-9][0-9]*$

?: 表示该子组是可选的,可以出现零次或一次。

只能输入由26个英文字母组成的字符串

^[A-Za-z]+$

[A-Za-z] 是一个字符类,用于匹配任意一个大写或小写英文字母。
[A-Z] 匹配任意一个大写英文字母。
[a-z] 匹配任意一个小写英文字母。

只能输入由数字、26个英文字母或者下划线组成的字符串

^\w+$

\w就是[0-9a-zA-Z_]。表示数字、大小写字母和下划线

以字母开头,长度在6~18之间,只能包含字符、数字和下划线

^[a-zA-Z]\w{5,17}$ 

只能输入汉字

^[\u4e00-\u9fa5]{0,}$ 

验证Email地址

^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

^\w+:邮箱必须以数字、大小写字母和下划线开头
([-+.]\w+): 匹配含- + . 的字符串 ,例如connect.hku
@: 匹配@号
\w+:@号后必须是字符
([-.]\w+)
:匹配含 - . 的字符串
.: 匹配点
\w+:点后必须是字符
([-.]\w+)*$:以含 - . 的字符串结尾
*:可以出现0次或多次
举例:test@example.com:匹配,

匹配首尾空白字符

^\s*|\s*$

| 表示逻辑上的或,用于分隔两个模式。

匹配网址URL的正则表达式

[a-zA-z]+://[^\s]*

[^\s]* 匹配零个或多个非空白字符。
匹配以字母开头,后跟 “冒号斜杠斜杠”,然后是零个或多个非空白字符的字符串.举例https://www.example.com,匹配

校验密码强度

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

(?=…) 是正向肯定预查的语法,表示在当前位置向后查找匹配括号内的表达式。
.:匹配除换行符外的任意一个字符。
.* 表示匹配任意数量的字符(除换行符外)。
(?=.\d) 表达式的含义是:在当前位置向后查找,如果存在至少一个数字,则匹配成功。当前位置是在匹配的起始位置(^)之后。
(?=.
[a-z]) 表示使用正向肯定预查来匹配至少一个小写字母。当前位置是在匹配的起始位置(^)之后。
(?=.*[A-Z]) 表示使用正向肯定预查来匹配至少一个大写字母。当前位置是在匹配的起始位置(^)之后。
包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间。

  • 32
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript正则表达式和Java正则表达式在语法上有一些差异,但是它们的基本概念和用法是相似的。下面是将JavaScript正则表达式转换为Java正则表达式的一些常见规则: 1. 语法差异: - JavaScript正则表达式使用斜杠(/)作为定界符,而Java正则表达式使用双引号(")作为定界符。 - JavaScript正则表达式中的特殊字符需要进行转义,而Java正则表达式中的特殊字符不需要转义。 2. 字符类: - JavaScript正则表达式中的字符类使用方括号([])表示,而Java正则表达式中使用方括号([])或者Unicode转义(\p{...})表示。 - JavaScript正则表达式中的字符类可以使用连字符(-)表示范围,而Java正则表达式中需要使用Unicode转义(\uXXXX)表示范围。 3. 量词: - JavaScript正则表达式中的量词使用花括号({})表示,而Java正则表达式中使用花括号({})或者问号(?)表示。 - JavaScript正则表达式中的贪婪量词默认是贪婪模式,而Java正则表达式中的贪婪量词需要在后面添加问号(?)来表示非贪婪模式。 4. 边界匹配: - JavaScript正则表达式中的边界匹配使用插入符号(^)和美元符号($)表示,而Java正则表达式中使用\A和\Z表示。 5. 其他差异: - JavaScript正则表达式中的捕获组使用圆括号(())表示,而Java正则表达式中使用圆括号(())或者方括号([])表示。 - JavaScript正则表达式中的反向引用使用反斜杠加数字(\1、\2等)表示,而Java正则表达式中使用美元符号加数字($1、$2等)表示。 以上是一些常见的JavaScript正则表达式转换为Java正则表达式的规则。具体转换时,还需要根据具体的正则表达式进行适当的调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值