快捷搜索:  汽车  科技

正则匹配每天一题(常见的正则匹配)

正则匹配每天一题(常见的正则匹配)Multiline RegExp 对象是否具有标志 m。 不只匹配一行。source 正则表达式的源文本。var reg=/study/ 等价于var reg= new RegExp("study"); 属性global RegExp对象是否具有标志 g。 全局ignoreCase RegExp对象是否具有标志 i。 忽略大小写

什么是正则

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。

构造函数方式

var reg= new RegExp("study"); var reg=new RegExp("study" "ig");

常量方式

var reg=/study/ 等价于var reg= new RegExp("study");

属性

global RegExp对象是否具有标志 g。 全局

ignoreCase RegExp对象是否具有标志 i。 忽略大小写

source 正则表达式的源文本。

Multiline RegExp 对象是否具有标志 m。 不只匹配一行。

方法

exec(字符串) 检索字符串中指定的值。返回找到的值,如果没有匹配到,则返回null。

test (字符串) 检索字符串中指定的值。返回 true 或 false。

使用正则的方法

正则匹配每天一题(常见的正则匹配)(1)

简单的正则示例

特殊字符

^ 匹配一行的开头,/^a/匹配"abc",而不匹配“bca“

$ 匹配一行的结尾,/a$/匹配“bca",而不匹配"abc"

. 匹配单个字符,除了换行和行结束符,等价于[^\n]

* 匹配前面元字符0次或多次,/ba*/将匹配b ba baa baaa

匹配前面元字符1次或多次,/ba /将匹配ba baa baaa

? 匹配前面元字符0次或1次,/ba?/将匹配b ba

x|y 匹配x或y /a|b/ 将匹配只要出现a或者b的字符串,不含a与b的不匹配

{n} 精确匹配n次 ,/d{4}/ 将匹配,出现连续4个d的字符串

{n } 匹配n次以上 ,/d{4 }/将匹配,出现连续4个及其以上多个d的字符串

{n m} 匹配n-m次,/d{4 6}/将匹配,出现连续4到6个d的字符串

[xyz] 匹配这个集合中的任一一个字符,如:[a-z] 表示小写a到小写z范围的字符。

[^xyz] 不匹配这个集合的任何一个字符 ,同样可以写范围,如:[^a-z]

(red|blue|green) 将一些正则匹配规则合成一个小组。

\d 匹配一个数字字符,/\d/ 等价于 /[0-9]/

\D 匹配一个非数字字符,/\D/ 等价于 /[^0-9]/

\w 匹配一个可以组成单词(变量)的字符(包括字母,数字,下划线)等价于[a-zA-Z0-9_]

\W 匹配一个不可以组成单词的字符

\n 匹配一个换行符 \f 匹配换页符。

\r 匹配一个回车符 \t 匹配一个制表符

\v 匹配一个重直制表符

\s 匹配一个空白字符,包括\n \r \f \t \v等

\S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/

\b 匹配一个单词的边界 (单词是以空格分割的)

\B 匹配一个单词的非边界

\0 匹配NUL 字符。

\ddd 匹配以八进制数 ddd 规定的字符。 Ru:var reg = /\141/; 等价于 var reg = /a/;

\xdd 匹配以十六进制数 dd 规定的字符。

\uxxxx 匹配以十六进制数 xxxx 规定的 Unicode 字符。

直接量字符(转义字符)

\f 换页符 \n 换行符 \r 回车

\t 制表符 \v 垂直制表符

\/ 一个 / 直接量 \\ 一个 \ 直接量

\. 一个 . 直接量 \* 一个 * 直接量

\ 一个 直接量 \? 一个 ? 直接量

\| 一个 | 直接量 \( 一个 ( 直接量

\) 一个 ) 直接量 \[ 一个 [ 直接量

\] 一个 ] 直接量 \{ 一个 { 直接量

\} 一个 } 直接量 \- 一个-直接量

量词

c{n} 匹配包含 n 个 c 的序列的字符串。

c{m n} 匹配包含 m 到 n 个 c 的序列的字符串。

c{n } 匹配包含至少 n 个 c 的序列的字符串。

c 匹配任何包含至少一个 c 的字符串,等价于c{1 } 。

c* 匹配任何包含零个或多个 c 的字符串,等价于c{0 }

c? 匹配任何包含零个或一个 c 的字符串,等价于 c{0 1}

c$ 匹配任何结尾为 c 的字符串。

^c 匹配任何开头为 c 的字符串。

?=c 匹配任何其后紧接指定字符串 c 的字符串。

对其后紧跟 "all" 的 "is" 进行全局搜索.

var str="Is this all there is"; var patt1=/is(?= all)/g;

?!c 匹配任何其后没有紧接指定字符串 c 的字符串。

对其后没有紧跟 "all" 的 "is" 进行全局搜索:

var str="Is this all there is"; var patt1=/is(?! all)/gi;

正则封装

小编以js为例简单封装

function checkAll(type value){ switch(type) { case 'Phone': if((/^1[34578]\d{9}$/.test(value))){ return true; }else{ return false; } break; } }

如果各位觉得可以大家记得收藏关注转发哦

猜您喜欢: