十分钟掌握正则表达式!2_正则规则_元字符_量词



正则规则_元字符_量词详解

1、元字符——表示一些特定的字符

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

// (.) => 点不是字符, 而是除了\n以外的任意字符
let reg = /^a.b$/;	// .可以代表任意字符
console.log(re1.test('a1b'));	  // => true
console.log(re1.test('a\tb'));	// => true
console.log(re1.test('a\nb'));	// => false, .唯一不能匹配\n

2、量词——表示指定字符串出现的次数

   +      至少出现一次   (>=1)
   *      出现0次或者多次  (0|n)  
   ?      出现0次或1次  (0|1)
   {11}   表示必须连续出11{1,}   表示至少出现一次,可以连续出现无限次
   {2,11} 表示至少出现2,至多出现11

3、()——组匹配

// 会将()内包裹的字符作为一个整体进行匹配,并且默认情况下会将匹配的结果进行捕获,暂存于RegExp对象中
var str="hell"
console.log(/h(e)(l)(l)/.test(str));//true
console.log(RegExp.$1); //e
console.log(RegExp.$2); //l
console.log(RegExp.$3); //l
console.log(RegExp.$4); //什么也不输出

4、[]——区间匹配

   [abc]    查找方括号之间的任何字符。
   [^abc]   查找任何不在方括号之间的字符。
   [0-9]    查找任何从 09 的数字。
   [a-z]    查找任何从小写 a 到小写 z 的字符。
   [A-Z]    查找任何从大写 A 到大写 Z 的字符。
   [A-z]    查找任何从大写 A 到小写 z 的字符。
   [adgk]   查找给定集合内的任何字符。
   [^adgk]  查找给定集合外的任何字符。也称为脱字符。
/*
   1. 表示多个可选项:当在[]出现连续区间的字符时,可以将首尾字符通过"-"连字符表示一段连续区间
   2. 在[]中出现^脱字符表示取非(只能出现在中括号的开头)
*/
// 1). 中括号中一般出现的字符都代表本身含义, 除了 \s\d\w这些
let reg = /^[abc]+$/;	// => 匹配[]中出现的字符一次或者多次
console.log(reg.test('a'))	   // => true
console.log(reg.test('b'))	   // => true
console.log(reg.test('c'))	   // => true
console.log(reg.test('ab'))	// => true
console.log(reg.test('bc'))	// => true
console.log(reg.test('abc'))  // => true
console.log("代表本身含义---------------------------------");

let reg = /^[(10)]+$/;	// => 匹配(、1、0、)、四个符号一次或者多次
console.log(reg.test('(10)'))	// => true
console.log(reg.test('(10'))	// => true
console.log(reg.test('('))		// => true
console.log(reg.test('1a2'))	// => false

// 2). 中括号中不存在多位数
let reg = /^[20]$/;				 // 匹配2或者0
console.log(reg.test('2'))	   // => false
console.log(reg.test('0'))	   // => false
console.log(reg.test('20'))	// => true
console.log("取非---------------------------------");

var reg = /[^0-9]/;			// 匹配除了0-9的字符
console.log(reg.test('2'))	    // => false
console.log(reg.test('a'))	    // => true
console.log(reg.test('S'))	    // => truee
console.log(reg.test('Ss'))	    // => true
console.log(reg.test('wwA'))    // => true
console.log("取非---------------------------------");


5、|——选择匹配

var stre = 'abcdef';
console.log(stre.match(/ab|cd/g));     // ["ab", "cd"]
console.log(stre.match(/[a(b|c)d]/g)); //  ["a", "b", "c", "d"]
console.log("选择匹配-----------------");

/** 
   | 如果但如使用, 规则会变得很混乱, 如同下面的一样,  
   	本来匹配ab或者cd的字符, 但是规则变得异常混乱:
   		1. ab开头的字符(true)
   		2. ab开头的字符(true)
   		3. a开头b结尾, 中间是b或c的字符(true)
*/
var reg = /^ab|cd$/	// => 本来想匹配字符 ab 或者 cd   
console.log(reg.test('ab'));		// => true 
console.log(reg.test('cd'));		// => true
console.log(reg.test('abd'));		// => true
console.log(reg.test('acd'));		// => true

// 所以, 一般用 ()分组括号 来配合 | 的使用, 他有提高优先级的作用
let reg1 = /^(ab|cd)$/	// => 匹配字符 ab 或者 cd
console.log(reg1.test('ab'));		 // => true 
console.log(reg1.test('cd'));		 // => true
console.log(reg1.test('abd'));	 // => false 
console.log(reg1.test('acd'));	 // => false 
console.log(reg1.test('abcd'));	 // => false 
console.log(reg1.test('bcd'));	 // => false 
console.log(reg1.test('ab123'));	 // => false 

// 例子 1
let reg2 = /^\d$|^\s$/	   // => 只能匹配一个空格或者一个数字的字符
console.log(reg2.test(' '));		// => true 
console.log(reg2.test('1'));		// => true
console.log(reg2.test('2 0'));		// => false 
console.log(reg2.test(' 30'));		// => false 
console.log("选择匹配-----------------");

// 例子 2——过滤
var str1 = '<meta charset="UTF-8">';
var reg = /\'|\<|\"|\>/g;
var rect = str1.replace(reg, function (params) {
    return "@#" + params.charCodeAt() + ";"//.charCodeAt() 返回字符串第一个字符的 Unicode 编码
    //对'、<、>、"、四个符号进行转换,让其他用户不知道原标签是什么,具有保密性
})
console.log(rect);//@#60;meta charset=@#34;UTF-8@#34;@#62;
console.log("过滤---------------------------------");


6、^ $——脱字符


let re1 = /^\d/;		// 字符串必须以数字开头
console.log(re1.test('abcdefg'));	// => false
console.log(re1.test('1234567'));	// => true
console.log(re1.test('0abcdef'));	// => true

let re1 = /\d$/;		// 字符串必须以数字结尾
console.log(re1.test('abcdefg'));	// => false
console.log(re1.test('1234567'));	// => true
console.log(re1.test('0abcdef'));	// => false

let re1 = /\d+/;		   // ^ $ 两个都不加, 那么字符串当中只要包含规则的内容即可
let re1 = /^\d$+/;		// ^ $ 两个都加, 那么字符串只能是和规则一致

//验证手机号码 ( 11位, 第一个数字是1就行 )
let reg = /^1\d{10}$/
————————————————
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值