您的位置 首页 java

JS-正则表达式

简介

对于正则表达式,相信很多人第一次看到它的时候都是不知所云的,一串奇怪的符号拼接起来,但是当你了解它过后你会发现他也是有迹可循的。

正则表达式是对 字符串 (包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。

基础概念

正则表达式的作用总结起来就是匹配,匹配字符串中特定字符的位置,或者其他相应作用,正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为”元字符”)组成的文字模式

  • 普通字符

普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。所有大写和小写字母、所有数字、所有标点符号和一些其他符号都属于普通字符

  • 非打印字符

该字符也属于匹配的组合部分。

非打印字符相关

  • 特殊字符

一些有特殊含义的字符

特殊字符相关

  • 限定符

限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有 * + ? {n} {n,} {n,m} 共6种

限定符相关

  • 定位符

定位符使您能够将正则表达式固定到行首或行尾。它们还使您能够创建这样的正则表达式,这些正则表达式出现在一个单词内、在一个单词的开头或者一个单词的结尾。

定位符相关

  • 转译字符

如果要匹配的字符串中本身就包含小括号,正则提供了转义的方式,也就是要把这些元字符、限定符或者关键字转义成普通的字符,做法很简答,就是在要转义的字符前面加个斜杠,也就是即可。

JS正则相关语法

正则的应用范围比较广,常见的java,c,js,都有提供相应的方法,这边我们以js为例

RegExpObject.test(string) 
匹配字符串,符合条件返回true,反之则false
RegExpObject.match(stringObject)
匹配字符串中内检索指定的值,或找到一个或多个正则表达式的匹配,返回[string,string,string]
RegExpObject.exec(string)
返回一个数组,其中存放匹配的结果
ES6对正则方法有了一些新的扩展,这边就不过多赘述
 

replace匹配关键字替换样式例子

案例

^ 匹配开头
$ 匹配结尾
let result = "hellowrold".replace(/^|$/g, '#');
匹配字符串,添加字符

 
/b && /B 单词边界
let result = "[JS] Lesson_01.mp4".replace(/b/g, '#'); 
 - "[#JS#] #Lesson_01#.#mp4#"
 
贪婪量词
尽可能去多的匹配字符串
惰性量词
尽可能的少匹配字符串
 

常见的正则匹配例子

检测密码强度

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

检测中文

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

检测E-Mail 地址

[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?
 

检测身份证号码

^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$
 

检测手机号

^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
 

文件路径及扩展名校验

^([a-zA-Z]\:|\\)\\([^\\]+\\)*[^\/:*?"<>|]+\.txt(l)?$
 

网页中的颜色代码

^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
 

提取网页图片

假若你想提取网页中所有图片信息,可以利用下面的表达式。

\< *[img][^\\>]*[src] *= *[\"\']{0,1}([^\"\'\ >]*)
 

提取页面超链接

提取html中的超链接。

(<a\s*(?!.*\brel=)[^>]*)(href="https?:\/\/)((?!(?:(?:www\.)?'.implode('|(?:www\.)?', $follow_list).'))[^"]+)"((?!.*\brel=)[^>]*)(?:[^>]*)>
 

查找CSS属性

通过下面的表达式,可以搜索到相匹配的CSS属性。

^\s*[a-zA-Z\-]+\s*[:]{1}\s[a-zA-Z0-9\s.#]+[;]{1}
 

抽取注释

如果你需要移除HMTL中的注释,可以使用如下的表达式。

<!--(.*?)-->
 

匹配HTML标签

通过下面的表达式可以匹配出HTML中的标签属性。

<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[\^'">\s]+))?)+\s*|\s*)\/?>
 

在线正则测试

文章来源:智云一二三科技

文章标题:JS-正则表达式

文章地址:https://www.zhihuclub.com/185646.shtml

关于作者: 智云科技

热门文章

发表回复

您的电子邮箱地址不会被公开。

网站地图