正则:检测字符串的一条规则。目标就是字符串 只要表单提交的都是字符串
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)