JS正则表达式(3) => 元字符详细解析

元字符详细解析

^ $

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 = /^1d{10}$/

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


// (.) => 代表(.), ()能把特殊字符传换成普通字符
let reg = /^a.b$/;	// .在这里被转意了, 代表字符串.
console.log(re1.test(a.b));	  // => true
console.log(re1.test(a1b));  	// => false
console.log(re1.test(a2b)); 	// => false

|

let reg = /^d$|^s$/	// => 只能匹配一个空格或者一个数字的字符
console.log(reg.test( ));			// => true 
console.log(reg.test(1));			// => true
console.log(reg.test(2 0));		// => false 
console.log(reg.test( 30));		// => false 

/** 
   *	| 如果但如使用, 规则会变得很混乱, 如同下面的一样,  
   * 		本来匹配ab或者xd的字符, 但是规则变得异常混乱:
   *			1. ab开头的字符(true)
   *			2. ab开头的字符(true)
   *			3. a开头b结尾, 中间是b或c的字符(true)
   */
let reg = /^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 
console.log(reg.test(abcd));	// => true 
console.log(reg.test(bcd));		// => true 
console.log(reg.test(ab123));	// => true 

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

[]

// 1. 中括号中一般出现的字符都代表本身含义, 除了 sdw这些
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))	// => false
console.log(reg.test(bc))	// => false
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
let reg = /^[d]+$/;			 // => 匹配一个数字或者一串数字
console.log(reg.test(1))	// => true
console.log(reg.test(12))	// => true
console.log(reg.test(123))// => true
console.log(reg.test(1a2))// => false
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
let reg = /^[34-91]$/;			// 匹配3或者1或者4-9的数一次
console.log(reg.test(1))	// => true
console.log(reg.test(3))	// => true
console.log(reg.test(4))	// => true
console.log(reg.test(34))	// => false
console.log(reg.test(91))	// => false
经验分享 程序员 微信小程序 职场和发展