Js正则表达式的如何写这样一个匹配规则!1) 取指定范围的内容 2)过滤指定范围的内容
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Js正则表达式的如何写这样一个匹配规则!1) 取指定范围的内容 2)过滤指定范围的内容相关的知识,希望对你有一定的参考价值。
1)‘abc='123'’ , 如果拆开规则怎么写 从 (abc=”) 开始-> 到 (”) 为止! 这之间的内容过滤掉!; 我希望得到的是 (abc=”“) 这样的结果 // 请写出正则表达式
2)'xyz="678" ' ; 从(xyz=") 开始 ->到(") 为止, 取这个范围内的值 ;我希望得到的是(678) // 请写出正则表达式
3) 在这里声明, 说套Jq 插件就免开尊口了,这个表达式对我很重要, 希望能得到解决!!
/\D*?/ 大\D代表着非数字,将非数字部分删除剩下的就是数字了。追问
1)可能是我没表达好; 那要是出现 'sad123asd' 这种情况你要怎么过滤?
2) 你这个跟指定(字节)进行过滤差不多, 我要的是要指定一个范围 ; 正则这么强大; 应该能办到吧
从 A 开始 到 B 之间的内容 , 中间的内容是动态的, 有时候是字母,有时候是数组,你这样规则写死不合适吧
你这个意思就完全不同了。
如果说是 ‘或“中的数据
那就a.replace(/([\'\"])1\d*?([\'\"])1/,"$1$2") 替换掉单引号或双引号中的数字
那就a.replace(/[\'\"]1(\d*?)[\'\"]1/,"$1") 保留单引号或双引号中的数字
没经过测试,大致是这样的方式。
如果是数组,没办法用正则来替换的。
不是数组 , 是数字, 输入法坑爹了
str.replace(/abc=\"\w+?\"/g,'')
这个正则是过滤掉 abc=“” 以及内容, 我指向取 中间 abc="" 引号里面的内容!
\w是字符,不包括特殊字符,那就好办了。
str.replace(/(abc=["']1[^”’\d]*?)(\d+?)([^”’\d]*?["']1)/,"$2")
如果你要保留数字,就是如上方式,如果你要删除数字,那就换成$1$3
把你想要用括号包起来,然后$1 就是第一个括号的内容,$2就是第二括号的内容,依次类推。
引号有时可能需要用到\转义。
["'] 表示单引号或者双引号都可以。
[^"'] 表示非单引号或双引号的所有字符
<script Language="javascript">
var str1 = '11111111111abc="sadasda"asdasdabc="111111"nnnnnnn';
document.write(str1.replace(/abc="[0-9a-zA-Z]+"/g,'abc=""'));//替换为空
var str="Visit Microsoft!xyz='abc110'xyz='11'xyz=000xyz='ppp'";
document.write('<br>'+str.match(/xyz='[0-9a-zA-Z]+'/g));
var a = str.match(/xyz='[0-9a-zA-Z]+'/g);
document.write(a[1]);//得到的结果是个数组,这样来获取你想要的那个字符串的值
</script>
你把代码copy在一个html文本上执行看看结果。正则是不需要jquery的,我不知道你从哪里说正则需要jquery插件的。
懂了就是懂了,早点睡吧。
js正则表达式
正则表达式
是一种规则,让计算机能读懂人类的规则。 它操作的都是字符串,不操作其他数据类型。 正则的操作方法也属于字符串操作方法的范围内。 js中大部分判断可以用正则,但实现项目并不会这样做。 所以一般是用来判断注册时的手机号、邮箱等。 如何定义正则 方法1
var re= //; //正则最常用,最简单的定义方法 |
方法2
var re= new RegExp( ‘‘ ); //一般不用这种方法 |
常用的正则操作方法 test 正则去匹配字符串,成功返回真,不成功返回假。所以一般用来判断。 并且,只要匹配到字符串就返回真,后面的不再去看。 语法: 正则.test(字符串); 例:
var str= ‘abcde‘ ; var re=/b/; console.log(re.test(str)) //true re=/g/; console.log(re.test(str)) //false re=/B/; //大写的 console.log(re.test(str)) //false 正则是区分大小写的 re=/B/i; //加 i 忽略大小写,注意一定要写在最后面 ocnsole.log(re.test(str)) //true |
在正则中的一些符号意义: | 表示“或” \w 字符 \W 非字符 \d 数字 \D 非数字 \s 空格 \S 非空格 \b 独立 \B 非独立 字符 字母,数字,下区线 独立部分 以它作为开始位置,或才结束位置,或者用空格隔开的。 要么是头,要么是尾,要么是空格格开的。 例:
var str= ‘122‘ ; var re=/\b1/; console.log(re.test(str)) //true 匹配在开头位置的1 var str= ‘221‘ ; var re=/1\b/; console.log(re.test(str)) //true 匹配在末尾位置的1 var str= ‘21 2‘ ; var re=/1\b/; console.log(re.test(str)) //true 匹配在空格在后面的1 var str= ‘2 12‘ ; var re=/\b1/; console.log(re.test(str)) //true 匹配在空格前面的1 |
search
用来搜索相应字符串,返回第一个找到位置,未找到返回-1。 不支持全局查找。 语法: str.search(re)
var str= ‘abcde‘ ; var re=/e/i; console.log(str.search(re)); //4 返回找到的位置 |
match 把匹配成功的项保存到数组
把匹配到的位置保存到数组中。 语法: 字符串.match(正则) 如果需要查找所有,需要用 /g (全局查找)
//把查找到的内容全部保存在数组里 var str= ‘agh123gh456dp789ghdphg‘ ; var re=/\d/; console.log(str.match(re)) //‘1‘ re=/\d+/; console.log(str.match(re)) //‘123‘ re=/\d+/g; console.log(str.match(re)) //[ ‘123‘, ‘456‘, ‘789‘ ] |
replace 查找替换
语法: 字符串.replace(正则,newstr)
var str= ‘aaca‘ ; var re=/a+/g; var newStr=str.replace(re, ‘b‘ ) console.log(newStr) //bcb 因为有 + 匹配多个 re=/a/g; newStr=str.replace(re, ‘b‘ ) console.log(newStr) //bbcb |
例,脏话替换
把: 这是一句脏话,这真的是一句脏话 换:*是一句*,*真的是一句*
var str= ‘这是一句脏话,这真的是一句脏话‘ ; var re=/这|脏话/g; console.log(str.replace(re, ‘*‘ )); //*是一句*,*真的是一句* |
replace 的第二个参数不只是可以使用字符串,还可以是您匿名函数。 匿名函数可以最多有99个形式参数所替换。 $1-$99 与正则中第1个到第99个子表达式相匹配的文本。 $0 表示当前查找到的项。 可以是 $0-$99 ,表示
var str= ‘这是一句脏话,这真的是一句脏话‘ ; var re=/这|脏话/g; console.log(str.replace(re, function ($0){ //$0是匹配成功的项,是一种固定形式 var sl= ‘‘ ; for ( var i=0;i<$0.length;i++){ sl+= ‘*‘ } return sl })); |
例,回顾一下,字符串的排序。
//按顺序排列 abcdefg var str= ‘badecgf‘ ; /*var arr=[]; for(var i=0;i<str.length;i++){ arr.push(str[i]) }*/ console.log(str.split( ‘‘ ).sort().join( ‘‘ )) |
括号 () 把单独的项目组成子表达式,以便可以便处理一个独立的单元那样用*、+、?来处理那些项目。 如 /(ab|cd)+|ef/ /ab|cd+|ef/ \1 表示重复出现的子项。 量词 {} 表示出现的次数。 *、+、m 也是量词,只是因为用得多而使用的简单表示。 {0,} * 0次以上。 {1,} + 1次以上。 {0,1} ? 0次或1次。 {n,m} 最少出来n次,最多出现m次。 {n} 正好出现n次。 {n,} 至少出现n次。 字符类,不确定 [] 任意字符。 [abc] abc中任意一个出现都可以。 比如: /o[sub]t/ 可以匹配: ost、out、obt。 范围 [a-z] 所有小写字母 [0-9] 所有数字 [a-z0-9] 所有小字字母或数字。注意,不用或号 | ,也不用空格 。 收尾 ^ $ ^开始 $结束 注意: 在中括号 [ ] 中, ^ 表示取反。
例,找出最多的那个字符
var str= ‘ansssstrcssfdssssfsdddfrsserbdfssssdsss‘ ; var newStr=str.split( ‘‘ ).sort().join( ‘‘ ) //排序过 console.log(newStr) var re=/(\w)(\1)+/g; var index=0; //记录出现的次数 var val= ‘‘ ; //记录谁出现的 var aa=newStr.replace(re, function ($1,$2){ //使用 replace 是为了使用里面的函数 console.log($1); console.log($2); //abc没有出现,因为他没有重复出现 if (index<$1.length){ index=$1.length; val=$2; } }) console.log( ‘最多的字符是 ‘ +val+ ‘出现了‘ +index+ ‘次‘ ) |
判断手机号码
判断是不是手机号码 1开头,第二个,3/5/7/8,共11位 /^1[3578]\d{9}/ 不加$ /^1[3578]\d{9}$/ 加$ 如果不加$结束号,那只要最后一位匹配正确情况正还要继续匹配,造成 12位、13位以上也是手机号的错误
var txt= ‘13123456789‘ ; var re=/^1[3578]\d{9}$/; re.test(txt) ? console.log( ‘是手机‘ ) : console.log( ‘不是手机‘ ) //^1 第1位是1 //[3578] 第2位是3578中的某位 //\d{9} 后面的是数字,并且有9位 |
判断QQ号
判断QQ号 1到9开头,共5到11位
var str= ‘12345123451‘ ; var re=/^[1-9]\d{4,10}$/; console.log(re.test(str)) |
以上是关于Js正则表达式的如何写这样一个匹配规则!1) 取指定范围的内容 2)过滤指定范围的内容的主要内容,如果未能解决你的问题,请参考以下文章