前段时间需要用到比较多的js代码,当时有点搞不清test和match方法的区别,向百度求助,找到了这边关于正则匹配的博文,感谢作者分享。

原文地址【http://blog.sina.com.cn/s/blog_89da3e5101013giy.html】

JS的正则表达式

rge.test(str) 检验目标对象中是否包含匹配模式,并相应的返回true或false   rge.source
str.search(rge) 将返回一个整数值,指明这个匹配距离字符串开始的偏移位置。如果没有找到匹配,则返回 -1
str.replace(re, function(){}) 替换匹配到的数值
rge.exec(str) 没有找到匹配,则它返回 null。如果它找到匹配,则 exec 方法返回一个数
str.match(rge) 用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组(全文匹配模式g,否则只返回第

一个匹配的内容)
match 方法没有找到匹配,返回 null。如果找到匹配返回一个数组并且更新全局 RegExp 对象的属性以反映匹配结果
Input 属性包含整个的被查找字符串。
Index 属性包含了在整个被查找字符串中匹配的子字符串的位置。
LastIndex
属性包含了最后一次匹配中最后一个字符的下一个位置。  
 
 function
RegExpTest()  
 {  
 var ver = Number(ScriptEngineMajorVersion() + "."
+
ScriptEngineMinorVersion())

if (ver >= 5.5){ // 测试 JScript
的版本。  
 var src = "The rain in Spain falls mainly in the
plain.";  
 var re = /\w+/g; //
创建正则表达式模式。  
 var
arr;  
 while ((arr = re.exec(src)) !=
null)  
 document.write(arr.index + "-" + arr.lastIndex +
arr + "\t");  
 }  
 else{  
 alert("请使用 JScript
的更新版本");  
 }  
 }

语法 1 re =
/pattern/[flags]  
语法 2 re = new
RegExp("pattern",["flags"])

g (全文查找出现的所有
pattern)

i
(忽略大小写)   
   
 m (多行查找)
 
定界符:/ /
前导字符:
元字符:规定前导字符在目标对象中出现的模式

“+”元字符规定其前导字符必须在目标对象中连续出现一次或多次。 /fo+/ 
“*”元字符规定其前导字符必须在目标对象中出现零次或连续多次。 /eg*/ 
“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次。 /Wil?/

限定符:可以指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。 {n}
n   
{n,}   
{n,m}

\s:用于匹配单个空格符,包括tab键和换行符;

\S:用于匹配除单个空格符之外的所有字符;

\d:用于匹配从0到9的数字;[0-9] 
 \D:用于匹配从0到9的数字;[^0-9]
 \w:用于匹配字母,数字或下划线字符;'[A-Za-z0-9_]'

\W:用于匹配所有与\w不匹配的字符;'[^A-Za-z0-9_]'

.
:用于匹配除换行符之外的所有字符。

\cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。 x
的值必须为 A-Z 或 a-z 之一。否

则,将 c 视为一个原义的 'c'
字符。   
 \f 匹配一个换页符。等价于 \x0c 和
\cL。   
 \n 匹配一个换行符。等价于 \x0a 和
\cJ。   
 \r 匹配一个回车符。等价于 \x0d 和
\cM。   
 \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [
\f\n\r\t\v]。

\S 匹配任何非空白字符。等价于 [^
\f\n\r\t\v]。

\t 匹配一个制表符。等价于 \x09 和
\cI。   
 \v 匹配一个垂直制表符。等价于 \x0b 和 \cK。

定位符:规定匹配模式在目标对象中的出现位置。 较为常用的定位符包括: “^”, “$”, “\b” 以及
“\B”。

“^”定位符规定匹配模式必须出现在目标字符串的开头

“$”定位符规定匹配模式必须出现在目标对象的结尾

“\b”定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个边界之一

“\B”定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内,

为了能够方便用户更加灵活的设定匹配模式,正则表达式允许使用者在匹配模式中指定某一个范围而不局限于具体的字符。

例如:
   
/([a-z][A-Z][0-9])+/ 上述正则表达式将会与任何由字母和数字组成的字符串,如 “aB0”
等相匹配。  
  
“|”。例如:/to|too|2/ 上述正则表达式将会与目标对象中的 “to”, “too”, 或 “2” 相匹配。
   否定符 “[^]”。与我们前文所介绍的定位符 “^”
不同,否定符 “[^]”规定目标对象中不能存在模式中所规  

的字符串。

当“^”出现在
“[]”内时就被视做否定运算符;而当“^”位于“[]”之外,或没有“[]”时,则应当被视做定  

符。
   ? 当该字符紧跟在任何一个其他限制符 (*, +, ?,
{n}, {n,}, {n,m})
后面时,匹配模式是非贪婪的。非贪婪模   式

尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串

"oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有
'o'。   
   . 匹配除 "\n" 之外的任何单个字符。要匹配包括
'\n' 在内的任何字符,请使用象 '[.\n]' 的模式。

优先级如下:  
 1.\ 转义符  
 2.(), (?:), (?=), []
圆括号和方括号  
 3.*, +, ?, {n}, {n,}, {n,m}
限定符  
 4.^, $, \anymetacharacter
位置和顺序  
 5.|“或”操作

正则表达式
"^\\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+)?$"  //浮点数

"^[A-Za-z]+$"  //由26个英文字母组成的字符串

"^[A-Z]+$"  //由26个英文字母的大写组成的字符串

"^[a-z]+$"  //由26个英文字母的小写组成的字符串

"^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串

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

"^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"    //email地址

"^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"  //url

"^[A-Za-z0-9_]*$" 
/^\[ \t]*$/ "^\[ \t]*$"
匹配一个空白行。

/\d{2}-\d{5}/ "\d{2}-\d{5}" 验证一个ID
号码是否由一个2位数字,一个连字符以及一个5位数字组成。

/<(.*)>.*<\/\1>/
"<(.*)>.*<\/\1>"
匹配一个 HTML 标记。

javascript的正则匹配的更多相关文章

  1. JavaScript 中正则匹配时结果不一致的问题

    创建示例项目 考察如下场景,我们有个输入框组件,输入时同时进行校验. interface IInputProps { label: string; } function Input({ label } ...

  2. javascript 之正则匹配HTML

    正则表达式 <(\S*?) [^>]*>.*?</\1>|<.*? /> 匹配 <html>hello</html>|<a> ...

  3. 常用的JavaScript正则匹配规则代码收藏,很实用

    收集一些常用的JavaScript正则表达式匹配规则,比如匹配电话号码.Email.中文字符.身份证号.邮编.QQ号.过滤空白行.匹配特定数字等.觉得这玩意是很有用的,只不过自己水平菜,老是自己写不出 ...

  4. JavaScript 正则匹配中文,中文符号,空格,全数字,以https:// 开头的url,用于各种场景的输入校验

    业务场景1: 密码输入框需要验证输入中文,中文符号,空格等情况,以便于给出错误提示 业务场景2: 输入框只允许输入数字的情况 业务场景3: 输入框允许输入均为数字或以https:// 开头的url的情 ...

  5. JavaScript——正则匹配、正则提取、正则替换

    正则匹配 // 匹配日期 var dateStr = '2015-10-10'; var reg = /^\d{4}-\d{1,2}-\d{1,2}$/ console.log(reg.test(da ...

  6. js正则匹配的一个日常应用

    应用实例 1 /** 将段落中的 \n 转换为 <p></p>, 规范存储 */ 2 function formatParagraphForStore(val) { 3 var ...

  7. JS中正则匹配的三个方法match exec test的用法

    javascript中正则匹配有3个方法,match,exec,test: match是字符串的一个方法,接收一个RegExp对象做为参数: match() 方法可在字符串内检索指定的值,或找到一个或 ...

  8. php中的正则函数主要有三个-正则匹配,正则替换

    php中变量的声明? 由于php声明变量的时候, 不支持使用 var关键字, 又不能直接写一个变量名字, 孤零零的放在那里, 所以, 在php中声明变量的方式, 同时也是给变量初始化的形式, 即: & ...

  9. phpstorm 正则匹配删除注释行(替换注释行为空行)

    使用phpstorm 来编写php 和javascript 代码,感觉还是不错的,用得也很舒服. 遇到了一个需求,有时候在阅读框架源代码的时候 , 想过滤(删除)掉源代码中的注释行,如果手动逐行删除显 ...

随机推荐

  1. 801. 二进制中1的个数(lowbit(n)函数)

    给定一个长度为n的数列,请你求出数列中每个数的二进制表示中1的个数. 输入格式 第一行包含整数n. 第二行包含n个整数,表示整个数列. 输出格式 共一行,包含n个整数,其中的第 i 个数表示数列中的第 ...

  2. CAN总线冲突裁决

    当总线上的几个器件同时发送数据的时候,CAN总线必须决定哪个器件可以发送,而其他的器件必须等待.冲突裁决是CAN协议最重要的一个特性. 以下图为例.总线上有器件A,B,C,D.A,B,C同时发出SOF ...

  3. java8 四大核心函数式接口Function、Consumer、Supplier、Predicate(转载)

    Function<T, R> T:入参类型,R:出参类型 调用方法:R apply(T t); 定义函数示例:Function<Integer, Integer> func = ...

  4. jar包和war包的介绍和区别(转载)

    来源:https://www.jianshu.com/p/3b5c45e8e5bd 做Java开发,jar包和war包接触的挺多的,有必要对它们做一个深入的了解,特总结整理如下: 1.jar包的介绍 ...

  5. ansible笔记(7):常用模块之包管理模块

    1.yum_repository模块 用于远程管理远程主机上的yum仓库. 参数解析: name:必须参数,用于指定要操作的唯一的仓库ID,也就是.repo配置文件中每个仓库对应的“中括号”内的仓库I ...

  6. 解决Macbook Pro蓝牙不可用问题

    谷歌搜索了下,在威锋网看到一个帖子,需要关机重置电源管理单元和系统NVRAM恢复出厂设置,具体操作如下:1.关机2.同时按下shift+control+option+power,保持5秒左右3.先按下 ...

  7. 力扣MYSQL练习

    176编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . select IFNULL((SELECT distinct salary from employee or ...

  8. C语言数据结构——第三章 栈和队列

    三.栈和队列 栈和队列是两种重要的线性结构.从数据结构的角度来看,栈和队列也是线性表,它的特殊性在于栈和队列的基本操作是线性表操作的子集,它们的操作相对于线性表来说是受到限制的,因此,可以称其为限定性 ...

  9. [Java] 多线程基础详细总结,附加详细实例

    详细代码在文章底部 目录 基础概念 进程与线程 单线程与多线程 实现线程的4中方式 thread.start()和runnable.run()的区别 Thread和Runnable的异同 线程的基本操 ...

  10. 001.Django_Model.整理

    Django001_Model.整理 Model表设计 数据定义数据存储,输出 a.定义表(信息 =字段) + 定义表关系 + (定义/限制)数据 b.通过orm等方法来,定义method来编辑原始数 ...