html中正则,JS-正则表达式

正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)

语法

/正则表达式主体/修饰符(可选)

正则的第一种写法

var reg=new RegExp('a');

var str='abcdefg';

alert(reg.test(str)); //返回bool值,代表是否匹配成功

正则表达式的第二种写法

perl风格 古老的语言

var re = /a/

var str='abcdefg';

re.test(str);

[ ] 中括号:匹配其中的某一个字符

var str = prompt();

var reg = /[abcde]/;//匹配是否有abcde中的字符

console.log(reg.test(str));

[ a-z ] 匹配所有小写字母

[0-9] == \d 匹配任意一个数字( )

小括号:分组:小括号里面的内容作为整体进行匹配

小括号用于分组,竖线作为间隔代表“或者”的含义

/(ab) | (cd)/ 匹配'ab' 或者 'cd'

/(a|b)cd/ 匹配 'acd' 或者 'bcd'

注意:小括号、竖线不要放在 [ ] 内(无意义)

| : 或,跟js中的(||)一样

^:排除(除了) 类似js中的(!)

^ (不在中括号里)匹配字符串开头

$ 匹配结尾

var reg = /^[a-z]$/;//小写字母 开头并且小写字母结尾,中间不能有字符(完整匹配)

/^$/这样的正则代表完整匹配

转义字符:元字符

\d ---- [0-9] 数字

\w -----[a-z0-9_A-Z] 数字,字母,下划线

\s --- 空白字符

\D -----[^0-9] 非数字

\W -----[^a-z0-9_] 非数字,字母,下划线

\ S -----非空白字符

. -----全部字符

b -----匹配单词边界

\B -----匹配 非 单词边界

\0(数字0) -----匹配 NUL 字符

\n -----匹配 换行符

\f -----匹配 换页符

\r -----匹配 回车符

\t -----匹配 制表符

\v -----匹配 垂直制表符

\u4e00 - \u9fa5 验证中文

量词:(单位名称)

{n} ---匹配n次

{n,m} ---最少n次,最多m次;

QQ号验证 /^[1-9]\d{4,10}$/

{n,} ---最少n次,最多不限

+ == {1,}最少为一个

? {0,1} 可有可无,最多一个

* {0,} 可以有也可以没有,个数不限

/(ab|cd){2}/ 匹配字符串"ab" 或者 "cd" 的2次,或者abcd 结果为:abab cdcd abcd cdab

匹配大小写不一样的字母怎么办?

var re=new RegExp('a','i')

正则对象中有一个参数,可以传入对应的值,i 代表让正则不区分大小写;

i:忽略大小写

var re= /a/i

g:全局查找

reg = /\d+/ g

g: 代表全局所有 (global)

m: 多行查找(必须与g一起实用,并且,当使用^和$模式时才会起作用)

正则对象的方法:

test方法

该方法用来测试某个字符串是否与正则匹配,匹配就返回true,否则返回false

compile方法

该方法的作用是能够对正则表达式进行编译,被编译过的正则在使用的时候效率会更高,适合于对一个正则多次调用的情况下,如果对一个正则只使用一两次,那么该方法没有特别显著的效应

var reg=/[abc]/gi;

console.log(reg.test('a'));

reg=/[cde]/gi;

console.log(reg.test('a'));

reg.compile(reg);

console.log(reg.test('a'));

exec方法

返回的是一个数组,数组元素为匹配的子字符串

支持正则的字符串方法

search

查找第一次匹配的子字符串的位置,如果找到就返回一个number类型的index值,否则返回-1

replace

该方法用来将字符串中的某些子串替换为需要的内容,接受两个参数,第一个参数可以为正则或者子字符串,表示匹配需要被替换的内容,第二个参数为被替换的新的子字符串

split

将一个字符串拆分成一个数组,它接受一个正则或者子字符(串)作为参数,返回一个数组

match

接受一个正则作为参数,用来匹配一个字符串,返回一个数组

例子:

var reg = new RegExp("b");//写法1

var str = prompt();

var reg = /b/;// 写法2 匹配是否存在b

var reg = /[abcde]/;//匹配是否有abcde中的字符

var reg = /[a-z]/;//匹配所有小写字母

var reg = /(ab)|(cd)/;//ab 或 cd

var reg = /(a|b)cd/;//acd 或bcd

var reg = /[^a-z]/;//不能有小写字母

var reg = /^[a-z]/;//小写字母开头

var reg = /^[a-z]$/;//小写字母 开头并且小写字母结尾,中间不能有字符(完整匹配)

var reg = /\d/;//匹配0-9的数字[0-9];

var reg = /./;//匹配所有字符

var reg = /\./;//转义字符z

var reg = /\d{6}/;//6个数字(超过也为true)

var reg = /a\d{6,8}a/;//六到8个数字,前后做好限定,否则会自动过滤掉多余的数字

var reg = /^[1-9]\d{4,10}$/;//5-11位,完整匹配

var reg = /\w/;//-[a-z0-9_A-Z] 数字,字母,下划线

var reg = /\s/;//空格

var reg = /\D/;//不为数字

var reg = /^\d+.{3,}$/;// 必须以数字开头,数量一个以上,紧接着任意字符至少三个,并以之结尾

var reg = /^\d?$/;//以数字开头 一个数字或者没有 {0,1} 可有可无,最多一个

var reg = /^\d*$/;//{0,} 可以有也可以没有,个数不限

var reg = /zhangsan/i;//i:忽略大小写

var reg = /\d+/g;//g: 代表全局所有 (global)

console.log(reg.test(str));

案例1:密码强度

登录

var input = document.querySelector("#pwd");

var numReg = /\d+/;

//var letterReg = /^[a-zA-Z]$/;

var letterReg = /[a-z]+/i;

var charReg = /[^0-9a-z]+/i;

//存储三个正则的验证结果

document.querySelector("button").onclick = function(){

var arr = [];

var pwd = input.value;

arr.push(numReg.test(pwd));

arr.push(letterReg.test(pwd));

arr.push(charReg.test(pwd));

console.log(arr);

var arr1 = arr.filter(function(item){

return item;

})

if(arr1.length === 1) alert("弱");

else if(arr1.length === 2) alert("中");

if(arr1.length === 3) alert("强");

}

附:扩展正则案例

只能用数字开头,长度在6--18位之间 /^\d.{5,17}$/

以字母开头,数字结尾,中间任意一个字符 /^[a-z].\d$/i

密码不能少于6位的字符 /^.{6,}$/

以a开头 b字符至少出现2个,至多出现6个(b连续出现) /^a.*b{2,6}/

变量的命名正则表达式(不能用数字开头 由字母、数字、下划线 、

math?formula=%E7%BB%84%E6%88%90)%20%2F%5E%5Ba-z_][\w

math?formula=%5D*/

开头为0的2或者三位数字加上 - 开头为非零的八位数字结尾是1到4位的分机号

/^0\d{2,3}-[1-9]\d{7}-\d{1,4}$/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值