JS---正则表达式/常用JS正则表达式

正则

1 . 修饰词

    ```
      i :匹配时忽略大小写 g : 匹配时全局匹配,查找所有匹配项, 
      而非查找到一个既停止
    ```

2 . 匹配模式
方括号
---方括号用于查找某个范围内的字符:

表达式 描述
[abc] 查找方括号之间的任何字符。
[^abc] 查找任何不在方括号之间的字符。
[0-9] 查找任何从 0 至 9 的数字。
[a-z] 查找任何从小写 a 到小写 z 的字符。
[A-Z] 查找任何从大写 A 到大写 Z 的字符。
[A-z] 查找任何从大写 A 到小写 z 的字符。
[adgk] 查找给定集合内的任何字符。
[^adgk] 查找给定集合外的任何字符。
   (red&|blue&|green)    查找任何指定的选项。

元字符----元字符(Metacharacter)是拥有特殊含义的字符:

元字符 描述
. 查找单个字符,除了换行和行结束符。
\w 查找单词字符。
\W 查找非单词字符。
\d 查找数字。
\D 查找非数字字符。
\s 查找空白字符。
\S 查找非空白字符。
\b 匹配单词边界。
\B 匹配非单词边界。
\0 查找 NUL 字符。
\n 查找换行符。
\f 查找换页符。
\r 查找回车符。
\t 查找制表符。
\v 查找垂直制表符。
\xxx 查找以八进制数 xxx 规定的字符。
\xdd 查找以十六进制数 dd 规定的字符。
\uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。

量词 描述
n+ 匹配任何包含至少一个 n 的字符串。
n* 匹配任何包含零个或多个 n 的字符串。
n? 匹配任何包含零个或一个 n 的字符串。
n{X} 匹配包含 X 个 n 的序列的字符串。
n{X,Y} 匹配包含 X 或 Y 个 n 的序列的字符串。
n{X,} 匹配包含至少 X 个 n 的序列的字符串。
n$ 匹配任何结尾为 n 的字符串。
^n 匹配任何开头为 n 的字符串。
?=n 匹配任何其后紧接指定字符串 n 的字符串。
?!n 匹配任何其后没有紧接指定字符串 n 的字符串。

RegExp 对象方法

方法 描述
compile 编译正则表达式。
exec 检索字符串中指定的值。返回找到的值,并确定其位置。
test 检索字符串中指定的值。返回 true 或 false。

支持正则表达式的 String 对象的方法

方法 描述
search 检索与正则表达式相匹配的值。
match 找到一个或多个正则表达式的匹配。
replace 替换与正则表达式匹配的子串。
split 把字符串分割为字符串数组。

常用正则表达式

    整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$只能输入数 
    字:"^[0-9]*$"。只能输入n位的数字:"^\d{n}$"。只能输入  
    至少n位的数字:"^\d{n,}$"。只能输入m~n位的数
    字:。"^\d{m,n}$"只能输入零和非零开头的数字:"^(0|[1-
    9][0-9]*)$"。只能输入有两位小数的正实数:"^[0-9]+(.[0-
    9]{2})?$"。只能输入有1~3位小数的正实数:"^[0-9]+(.[0-
    9]{1,3})?$"。只能输入非零的正整数:"^\+?[1-9][0-9]*$"。
    只能输入非零的负整数:"^\-[1-9][]0-9"*$。只能输入长度
    为3的字符:"^.{3}$"。只能输入由26个英文字母组成的字符
    串:"^[A-Za-z]+$"。只能输入由26个大写英文字母组成的
    字符串:"^[A-Z]+$"。只能输入由26个小写英文字母组成的
    字符串:"^[a-z]+$"。只能输入由数字和26个英文字母组成
    的字符串:"^[A-Za-z0-9]+$"。只能输入由数字、26个英文
    字母或者下划线组成的字符串:"^\w+$"。验证用户密
    码:"^[a-zA-Z]\w{5,17}$"正确格式为:以字母开头,长度
    在6~18之间,只能包含字符、数字和下划线。验证是否含有
    ^%&',;=?$\"等字符:"[^%&',;=?$\x22]+"。只能输入汉
    字:"^[\u4e00-\u9fa5]{0,}$"验证Email地址:"^\w+([-
    +.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。验证
    InternetURL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?
    %&=]*)?$"。验证电话号码:"^(\(\d{3,4}-)|\d{3.4}-)?
    \d{7,8}$"正确格式为:"XXX-XXXXXXX"、"XXXX-
    XXXXXXXX"、"XXX-XXXXXXX"、"XXX-
    XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。验证身份证号
  (15位或18位数字):"^\d{15}|\d{18}$"。验证一年的12个
    月:"^(0?[1-9]|1[0-2])$"正确格式
    为:"01"~"09"和"1"~"12"。验证一个月的31天:"^((0?[1-
    9])|((1|2)[0-9])|30|31)$"正确格式
    为;"01"~"09"和"1"~"31"。 匹配中文字符的正则表达式:
    [\u4e00-\u9fa5]匹配双字节字符(包括汉字在内):[^\x00-
    \xff]应用:计算字符串的长度(一个双字节字符长度计2,
    ASCII字符计1)String.prototype.len=function(){return 
    this.replace(/[^\x00-\xff]/g,"aa").length;}匹配空行的正
    则表达式:\n[\s| ]*\r匹配html标签的正则表达式:<(.*)>
    (.*)<\/(.*)>|<(.*)\/>匹配首尾空格的正则表达式:(^\s*)|
    (\s*$) 判断邮箱:var reg = /^\w+@\w+(\.
    (com|cn|net|org|edu)){1,2}$/g;判断手机号:var reg = 
    /^((13|18)(\d{9}))$|^(14[57]\d{8})$|^(17[07]\d{8})$|
    (^15[0-35-9]\d{8}$)/;判断小数:var reg = 
    /^\d+\.\d+$/g;判断后缀:var reg = /^.+\.pdf$/i;判断
    纯数字:var reg = /^\d+$/g;判断IP地址:^([1-9]|[1-
    9]\d|1\d\d|2[0-4]\d|25[0-5])(\.(\d|[1-9]\d|1\d\d|2[0-
    4]\d|25[0-5])){3}$匹配中文字符的正则表达式: [\u4e00-
    \u9fa5]评注:匹配中文还真是个头疼的事,有了这个表达式
    就好办了匹配双字节字符(包括汉字在内):[^\x00-\xff]评
    注:可以用来计算字符串的长度(一个双字节字符长度计2,
    ASCII字符计1)匹配空白行的正则表达式:\n\s*\r评注:可
    以用来删除空白行匹配HTML标记的正则表达式:<(\S*?)
    [^>]*>.*?|<.*? />评注:网上流传的版本太糟糕,上面这个
    也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力匹配首
    尾空白字符的正则表达式:^\s*|\s*$评注:可以用来删除行
    首行尾的空白字符(包括空格、制表符、换页符等等),非常有
    用的表达式匹配Email地址的正则表达式:\w+([-
    +.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*评注:表单验证
    时很实用匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*评
    注:网上流传的版本功能很有限,上面这个基本可以满足需求
    匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字
   下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$评注:表单验证
   时很实用匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}评注:
   匹配形式如 0511-4405222 或 021-87888822匹配腾讯
   QQ号:[1-9][0-9]{4,}评注:腾讯QQ号从10000开始匹配中
   国邮政编码:[1-9]\d{5}(?!\d)评注:中国邮政编码为6位数字
   匹配身份证:\d{15}|\d{18}评注:中国的身份证为15位或18
  位匹配ip地址:\d+\.\d+\.\d+\.\d+评注:提取ip地址时有
  用匹配特定数字:^[1-9]\d*$    //匹配正整数^-[1-
  9]\d*$   //匹配负整数^-?[1-9]\d*$   //匹配整数^[1-
  9]\d*|0$  //匹配非负整数(正整数 + 0)^-[1-
  9]\d*|0$   //匹配非正整数(负整数 + 0)^[1-
  9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮点数^-([1-
  9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配负浮点数^-?([1-
  9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮点数^[1-
  9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$   //匹配非负浮点
  数(正浮点数 + 0)^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?
  \.0+|0$  //匹配非正浮点数(负浮点数 + 0)评注:处理
  大量数据时有用,具体应用时注意修正匹配特定字符串:^[A-
  Za-z]+$  //匹配由26个英文字母组成的字符串^[A-
  Z]+$  //匹配由26个英文字母的大写组成的字符串^[a-
  z]+$  //匹配由26个英文字母的小写组成的字符串^[A-Za-
  z0-9]+$  //匹配由数字和26个英文字母组成的字符串
  ^\w+$  //匹配由数字、26个英文字母或者下划线组成的字
  符串评注:最基本也是最常用的一些表达式整理出来的一些
  用的正则表达式所属分类: JScript (三)Email : /^\w+([-
  +.]\w+)*@\w+([-.]\\w+)*\.\w+([-.]\w+)*$/isEmail1 : 
  /^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/;isEmail2 : 
  /^.*@[^_]*$/;Phone : /^((\(\d{3}\))|(\d{3}\-))?(\
  (0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/Mobile : /^((\
  (\d{3}\))|(\d{3}\-))?13\d{9}$/Url : /^http:\/\/[A-Za-z0-
  9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*
  ([^<>\"\"])*$/IdCard : /^\d{15}(\d{2}[A-Za-z0-9])?
  $/Currency : /^\d+(\.\d+)?$/Number : /^\d+$/Code : 
  /^[1-9]\d{5}$/QQ : /^[1-9]\d{4,8}$/Integer : /^[-\+]?
  \d+$/Double : /^[-\+]?\d+(\.\d+)?$/English : /^[A-Za-
  z]+$/Chinese : /^[\u0391-\uFFE5]+$/UnSafe : /^(([A-
  Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?
  \\\/\'\"]*)|.{0,5})$|\s/PassWord :^[\\w]{6,12}$ZipCode : 
  ^[\\d]{6}/^(\+\d+ )?(\(\d+\) )?[\d ]+$/; //这个是国际通用
  的电话号码判断/^(1[0-2]\d|\d{1,2})$/; //这个是年龄的判
  断/^\d+\.\d{2}$/; //这个是判断输入的是否为货币值应用:
  计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
  String.prototype.len=function(){return 
  this.replace([^\x00-\xff]/g,"aa").length;}应用:javascript
  中没有像vbscript那样的trim函数,我们就可以利用这个表达式
  来实现,如下:String.prototype.trim = function(){ return 
  this.replace(/(^\s*)|(\s*$)/g, "");}匹配空行的正则表达式:
  \n[\s| ]*\r匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|
  <(.*) \/>/匹配首尾空格的正则表达式:(^\s*)|(\s*$)匹配
  Email地址的正则表达式:\w+([-+.]\w+)*@\w+
  ([-.]\w+)*\.\w+([-.]\w+)*匹配网址URL的正则表达式:
  http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?^\d+$  //
  匹配非负整数(正整数 + 0)^[0-9]*[1-9][0-9]*$  //匹配
  正整数^((-\d+)|(0+))$  //匹配非正整数(负整数 + 0)^-
  [0-9]*[1-9][0-9]*$  //匹配负整数^-?\d+$    //匹
  配整数^\d+(\.\d+)?$  //匹配非负浮点数(正浮点数 + 
  0)^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-
  9]+)|([0-9]*[1-9][0-9]*))$ //匹配正浮点数^((-\d+
  (\.\d+)?)|(0+(\.0+)?))$  //匹配非正浮点数(负浮点数 + 
  0)^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.
  [0-9]+)|([0-9]*[1-9][0-9]*)))$ //匹配负浮点数^(-?\d+)
  (\.\d+)?$
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容