首页 > 技术文章 > .正则

vichin 2017-08-21 08:31 原文

在JavaScript中,正则表达式的对象。

    生成正则表达式对象有两种方式:字面量、构造函数。
    字面量:var reg=/\bis\b/g;
    构造函数: var reg=new RegExp('\\bis\\b','g');//在JavaScript中(\本身就是特殊字符,所以需要\来进行转意)
 
修饰符:g、i、m。
元字符:
    
 
元字符中分3类:预定义类边界以及量词
 
预定义类:
.(等同于[^\r\n]):用于匹配除回车符换行符之外的所有字符
\d(等同于[0-9])     :用于匹配数字字符
\D(等同于[^0-9]):用于匹配非数字字符
\s(等同于[\t\n\x0B\f\r]):用于匹配空白字符
\S(等同于[^\t\n\x0B\f\r]):用于匹配非空白字符

\w:用于匹配单词字符(包括汉字,字母,数字和下划线)

 

\W:用于匹配任意非单词字符
边界:
^:用于匹配行首,若要匹配以S开头 ,那么就写成:^S
$:用于匹配行尾,若要匹配以B结尾,那么就写成:B$
\b: 单词边界
\B:非单词边界
^不出现在中括号[ ]中的时候,就不代表取反。元字符的含义并不是唯一的。
@123@abc@.replace(/^@./g,"Q")。将前面字符串中,以@开头的部分,替换成Q。
结果是Q@abc@
量词:
?:表示出现零次或者一次(最多出现一次)
+:表示出现一次或者多次(至少出现一次)
*:表示出现零次或者多次(任意次数)
{n}:出现n次
{n,m}:出现n到m次
{n,}:至少出现n次
 Byron{3}:量词只作用于紧跟着他的字符,所以是byron中的n重复3次,而非这个单词重复3次。 
string str="0123-4567890";
Regex.IsMatch(str, @"^(\d{3,4}-)?\d{6,8}$");
验证电话号码

  

^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
检验密码强度

 

^[\\u4e00-\\u9fa5]{0,}$
字符串只能是中文

 

^\\w+$
由数字,26个英文字母或下划线组成的字符串

 

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

 

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{3}([0-9]|X)$
校验身份证号码

 

^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$
“yyyy-mm-dd“ 格式的日期校验,已考虑平闰年

  

^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$
金额校验,精确到2位小数

 

\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b
校验IP-v4地址

 

(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))
校验IP-v6地址

 

^(f|ht){1}(tp|tps):\\/\\/([\\w-]+\\.)+[\\w-]+(\\/[\\w- ./?%&=]*)?
提取URL链接

 

^([a-zA-Z]\\:|\\\\)\\\\([^\\\\]+\\\\)*[^\\/:*?"<>|]+\\.txt(l)?$
文件路径及扩展名校验

 

^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
提取Color Hex Codes

 

\\< *[img][^\\\\>]*[src] *= *[\\"\\']{0,1}([^\\"\\'\\ >]*)
提取网页图片

 

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

 

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

 

<!--(.*?)-->
抽取注释

 

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

 

([^<>/\\\|:""\*\?]+\.\w+$)
获取路径中文件的名字(包括后缀)

 

[a-zA-Z]+
获取字符串中的英文字母

 

推荐阅读