Js正则表达式的如何写这样一个匹配规则!1) 取指定范围的内容 2)过滤指定范围的内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Js正则表达式的如何写这样一个匹配规则!1) 取指定范围的内容 2)过滤指定范围的内容相关的知识,希望对你有一定的参考价值。

1)‘abc='123'’ , 如果拆开规则怎么写 从 (abc=”) 开始-> 到 (”) 为止! 这之间的内容过滤掉!; 我希望得到的是 (abc=”“) 这样的结果 // 请写出正则表达式

2)'xyz="678" ' ; 从(xyz=") 开始 ->到(") 为止, 取这个范围内的值 ;我希望得到的是(678) // 请写出正则表达式

3) 在这里声明, 说套Jq 插件就免开尊口了,这个表达式对我很重要, 希望能得到解决!!

参考技术A /\d*?/ 就代表着所有的数字了。将数字全部替换掉,用替换正则为空就可以了。
/\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就是第二括号的内容,依次类推。
引号有时可能需要用到\转义。
["'] 表示单引号或者双引号都可以。
[^"'] 表示非单引号或双引号的所有字符

本回答被提问者采纳
参考技术B 我只给一个例子你参考,中午时候我在上班没时间帮你写。
<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)过滤指定范围的内容的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JS 正则表达式查找所有不匹配字符的索引?

JS的正则表达式简介

用js的正则表达式检测电话号码,要求必须是1开头,只能是11位数字,该正则表达式怎么写?

Nginx中的正则如何匹配数字

js正则表达式

匹配一个网址URL的js正则表达式怎么写啊?