js正则
Posted caoxinbo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js正则相关的知识,希望对你有一定的参考价值。
正则:检测字符串的一条规则。目标就是字符串 只要表单提交的都是字符串
Json的本质 还是字符串
是一种对文本字符串进行验证、格式化的非常强大的工具。使用正则表达式可以轻松的识别和操纵文本,
从而节省大量的编程时间。例如验证用户的输入的电话号码、身份证号、电子邮件、QQ号等是否符合正确格式。
正则基本语法:
var reg = /pattern/ flags;
//构造函数方式创建
var reg = new RegExp(pattern,flags);
一、元字符
字符 匹配
\ 在字面意义和特殊意义之间切换
. 除了换行符外的任何字符
^ 脱字符,字符串的开头
$ 字符串的结尾
* 匹配前一项零次或多次,等价于0,
+ 匹配前一项一次或多次,等价于1,
? 匹配前一项0次或1次,等价于0,1
\s 任何一个空白字符(\f \n \r \t \v )
\S 非空白字符
\f 换页符
\n 换行符
\r 回车符
\t 制表符
\d 0~9任意数字,相当于[0-9]
\D 任何非数字
\w 任何字母、数字及下划线
\W 除数字、字母及下划线外的其他字符
n 前面的字符正好出现n次,n代表数字
n, 前面的字符至少出现n次,
n,m 前面的字符出现n~m次。
[abcd] 与[ ]中任何字符匹配的字符集
[^abcd] 与[ ]中任何字符都不匹配的字符集
[A-Z] 与[ ]中的字符串范围匹配的字符集
() 一个组,即将括号中的作为一个整体
x | y x或者y。优先匹配左边,左边能匹配上,右边就不匹配。
注意1:在使用? 或* 时要注意,由于这些字符可能匹配0个字符,因此他们允许什么都不匹配。例如:/a*/
实际上与字符串"bbbb","10029"都是匹配的,因为字符串中含有0 个a
注意2: 当使用* + 等正则字符时,匹配的只是紧邻符号的单个字符。如果需要匹配多个字符,需要() 将多个字符括起来
二、正则表达式的方法 2.1 test() 返回布尔类型,如果有匹配项返回true。没有返回false 2.2 exec() 查找并返回匹配结果,并以长度为1的数组的形式返回。数组的第一项即为匹配的结果。
如果没有匹配结果返回null;exec() 会受到flags参数g的影响。正常情况不需要加g;
如果指定了g,则下次调用exec() 时,会从上个匹配的lastIndex开始查找。
匹配特定数字: ^[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个英文字母或者下划线组成的字符串
匹配中文字符的正则表达式: [/u4e00-/u9fa5]
匹配双字节字符(包括汉字在内):[^/x00-/xff]
匹配空行的正则表达式:/n[/s| ]*/r
匹配html标记的正则表达式:/<(.*)>.*<///1>|<(.*) //>/
匹配首尾空格的正则表达式:(^/s*)|(/s*$)
匹配Email地址的正则表达式:/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*
匹配网址URL的正则表达式:http://([/w-]+/.)+[/w-]+(/[/w- ./?%&=]*)?
Match() 查找找到一个或者多个正则表达式的匹配,有就返回查找的结果,没有就算null
语法:string.match(reg)
Search 查找与正则表达式相匹配的值 检测不到返回-1,检测找了 返回查找的字符首次在字符中的位置
语法:string.Search(reg)
字符串检索 分两种结果 第一种是查找型 查找就会终止,不会向下再次查找
分两种 第一是捕获首次
第二种是捕获型 出现的 第一是捕获首次出现的 第二种是捕获所有的/g
Replace() 在字符串中查找匹配的字串,并替换与正则表达式匹配的字串
如果检索到,返回替换后的新字符串,如果没有检索到,返回原字符串
语法:string.replace(reg,newstring)
以上是关于js正则的主要内容,如果未能解决你的问题,请参考以下文章