随身笔记
随身笔记

正则笔记

js 正则

最新笔记正则笔记.txt

百度正则资料参考

正则就是对字符串进行处理,过滤筛选出我们需要的指定的字符串,这样增加了用户体验也减轻了服务器
的负担。

 

创建正则方法一:(代码有点冗余)

var box=new RegExp('box','ig');

如果使用此方法遇到\还需要多次转义:new RegExp(“\\s”,’ig’) 相当于 /\s/ig

 

创建正则方法二:(推荐使用)

var box=/box/ig

遇到字符串需要拼接可以这么使用要用到eval

var str='aa';
console.log( eval('/^'+str+'[0-9]$/').test('aa4') );

(可以把创建正则理解为创建一个规则,一段字符串经过这个规则过滤后就是我们需要的内容)

 


test() //匹配字符串 返回的是布尔值

var box=new RegExp('Box','i'); //i 不区分大小写
var str='box';
alert(box.test(str)); //true
可以一句话写完
alert(/Box/i.test('box'));


简单的了解正则的作用
var box =new RegExp('Box','i');
var str='this is box';
alert(box.test(str)); //检查这段字符串中是否含有 模式中的正则。

 

exec() //匹配字符串 返回数组

var box =new RegExp('Box','i');
var str='this is box';
alert(box.exec(str)); //存在就返回 数组的值 没有就返回null

 

 


String对象提供 4个正则表达式的方法

match() //把所有匹配到的字符串组合成数组,记得要开启g全局模式

'this is box,that is box'.match(new RegExp('Box','ig'))   //["box", "box"]

 

replace() //替换字符串

'this is box,that is box'.replace(new RegExp('Box','ig'),'tom')  // 'this is tom,that is tom'

 

search() //返回第一个匹配到的位置 索引从0开始 无需开启 正则无需开启g全局模式,找不到返回-1

'this is box,that is Box'.search(new RegExp('Box'))  // 20  索引从0开始Box在第20个位置

 

split()

 

———————————————————

 

RegExp对象的静态属性
var box=/google/i;
var str=’this is a google’;
box.test(str); //*必须要执行一下,静态属性才有校

alert(RegExp.input); // this is a google

RegExp1

RegExp对象实例属性 (功能没什么用)

RegExp2

 


获取控制

点 // 可以匹配任意字符串,必须要有不能为0个

var box=/g.ogle/;

var str='g2ogle';

alert(box.test(str)); //true

 

* // 可以匹配 0个 1个 或者 多个

var box=/go*ogle/; //*的前面是o ,就对前面的o起作用

var str='gogle';

var str='google';

var str='gooooooogle';

 

+ // 至少1个 或者 多个

 

? // 0个 或者 1个

 

 

{}允许重复的个数 // 重复匹配指定的范围

var box=/go{2,4}gle/; // o的数量只能是 2个到4个之间 可以是2个或者4个

var box=/go{3}gle/; //只能3个o

var box=/go{3,}gle/; //至少3个o

 

[]允许出现的范围 // 26个字母只能任意匹配 一个,默认是区分大小写的如果不想就开启i

var box=/[a-z]oogle/; //26个字母任意匹配一个

var box=/[0-9]oogle/; //匹配0到9一个数字

 

注意一个例子:

var box=/[0-9]oogle/;
var str=’444444444oogle’; //*这里也一样匹配成功因为匹配的是后面6位,不管是后6位还是前6位正则自动去寻找能匹配成功的一段字符串中的某一小段
alert(box.test(str)); //true

 

[a-zA-Z0-9] 复合 //可以匹配到a-z A-Z 0-9任意一个

 

| //或

 

()  // 多结构,一般和|配合使用

var box=/(c|b|e)/ig;
var str='this is a gogle';
console.log(box.test(str))  //可以匹配到e

注意:/(0-9)/ig  这个意思是匹配'0-9'的字符串

 

 

^ 两种用法

^  // 非 ,通常和[]配合使用
var box=/[^0-9]oogle/; //非 0到9的 任意一个字符
str.replace(/[^\d\.\,]/ig,'')  //除了数字和,和.   其他的都替换为空格


^ //强制首匹配
 var box=/^[0-9]oogle/;
 var str='444444444oogle';
 alert(box.test(str)); //false 这里就从头开始匹配了 位数一一对应

 

 

$ //强制尾匹配

var box=/google$/;
 var str='fadf3w3fsdfgoogle'; //字符串的结尾必须是google才能匹配

 

 

\  //转义

/\.|\\/ig   //匹配.或者\ 这两个字符串

 

 

?:
例如
industr(?:y|ies) 等同于 industry|industries

 

?=
/aa(?=95|2000)/ig.test(e.value) 只能匹配到 ‘aa95’,’aa2000’中的aa,以外的都不行,如果’aa2001’就不能匹配到里面的aa

 

?!
跟?=相反,只要不是’aa95′,’aa2000’都可以匹配,例如’fdfs23aa’,’$%^&aa&&’都可以匹配里面的aa

 

?<=
跟?=类似,最好理解是用/(?=95|2000)aa/ig 来进行匹配,发现不会成功。但是使用以下方法就成功
/(?<=95|2000)aa/ig.test(e.value),能匹配”95aa”中的”aa”,但是不能匹配”96aa”中的”aa”

 

 

可以组合使用例如

var box=/g.?ogle/; // 意思是字符串 可以放0个或1个任意的字符串

 

var box = /[a-z0-9]+/;
var str='fa8sd9f8s09df8sd90f'; // true 只要是数字和字母组合成的都能匹配成功

 

 

 

/^(?:\s|(.+\s))?problem_tip(?:\s|(\s.+))?$/ig     //除了…只能,前后只能匹配空格,并且可以是0个或者多个空格

 

\w // [a-zA-Z0-9_]
\W // [^a-zA-Z0-9_]
\d // [0-9]
\D // [^0-9]

 

密码正则:

能匹配的组合为:数字+字母,数字+特殊字符,字母+特殊字符,数字+字母+特殊字符组合,而且不能是纯数字,纯字母,纯特殊字符

^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$).{6,20}$

如果要限定特殊字符,例如,特殊字符的范围为 !#$%^&* ,那么可以这么改

^(?![\d]+$)(?![a-zA-Z]+$)(?![!#$%^&*]+$)[\da-zA-Z!#$%^&*]{6,20}$

 

正则 密码 正则密码 数字字母组合

if (pwd == null || pwd == "") {
 regTip.tupwd.show().html("密码不能为空");
 return false;
}else if (pwd.length < 6 || pwd.length > 18) {
 regTip.tupwd.show().html("密码长度不对");
 return false;
}else if ( !(/^(?=.*[0-9])(?=.*[a-zA-Z])(.{6,})$/ig.test(pwd)) ) {
 regTip.tupwd.show().html("请输入6-18位数字+字母组合密码");
 return false;
}

 

正则 输入金额,例如类似这样格式: 12345.99

<input type="text" onkeyup="fn.call(this)">
function fn(){

 if( !(/^([1-9][0-9]*\.?[0-9]{0,2})$/ig.test(this.value)) ){
 this.value=(this.value).replace(/[^0-9/.]|^[^1-9]/ig,''); //将开头为0或者非数字的字符串都替换为空

 if( !(!(this.value.match(/\./ig)) && typeof((this.value.match(/\./ig)))!="undefined" && (this.value.match(/\./ig))!=0) ){ //这里是防止匹配不到正则是返回null而报错,做了防止报错处理,即使不要这判断效果还在
 if( this.value.match(/\./ig).length>1 ){ //如果之前已经输入了小数点,后面就无法继续输入小数点。(但如果转牛角尖把光标移动前面在继续输入还是可以输的)
 this.value=(this.value).replace(/\.$/ig,'')
 }else if( this.value.split('.')[1].length>2 ){
 this.value= Math.floor(this.value*100)/100
 }
 }
 }

}

https://sdeno.com/wp-content/uploads/2018/08/test.html

 

随身笔记

正则笔记
js 正则 最新笔记正则笔记.txt 百度正则资料参考 正则就是对字符串进行处理,过滤筛选出我们需要的指定的字符串,这样增加了用户体验也减轻了服务器 的负担。   创…
扫描二维码继续阅读
2014-12-23