js正则 匹配字符串中除了某些字母之外的所有字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js正则 匹配字符串中除了某些字母之外的所有字符相关的知识,希望对你有一定的参考价值。

参考技术A

要用String对象的match方法,而且正则匹配模式要写成全局匹配。

<br>var str=&quot;A b c i am A man A BAB&quot;;<br>var reg=/[^Abc]+/g。

<br>//var result=reg.exec(str);<br>var result=str.match(reg);<br>if(result==null)<br>。

<br>alert('请重新输入');<brelse<br>alert(result.length);<br>。

扩展资料:

javascript是一种脚本语言,其源代码在发往客户端运行之前不需经过编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行。直译语言的弱点是安全性较差,而且在JavaScript中,如果一条运行不了,那么下面的语言也无法运行。而其解决办法就是于使用trycatch()。

Javascript被归类为直译语言,因为主流的引擎都是每次运行时加载代码并解译。V8是将所有代码解译后再开始运行,其他引擎则是逐行解译(SpiderMonkey解译过的指令暂存,以提高性能,称为实时编译)。

但由于V8的核心部分多数用Javascript撰写(而SpiderMonkey是用C++),因此在不同的测试上,两者性能互有优劣。与其相对应的是编译语言,例如C语言,以编译语言编写的程序在运行之前,必须经过编译,将代码编译为机器码,再加以运行。

参考资料来源:百度百科-javascript

正则表达式考点

正则表达式的作用:

  分割字符串、查找字符串、匹配字符串、替换字符串:简称->分割、查找、匹配、替换

正则表达式的分隔符:

  正斜线(/),hash符号(#),取反符号(~)

通用原子

  1. d : 十进制的0-9
  2. D : 对d取反:除了0-9
  3. w : 数字、字母、下画线
  4. W : 除了数字、字母、下画线
  5. s : 空格、换行符、换页符、回车符、字表符
  6. S : 除了空格、换行符、换页符、回车符、字表符

元字符

  • . : 除了换行符之外的任意字符
  • * : 匹配前面内容出现0次、1次或多次
  • ? : 匹配前面内容出现0次或1次
  • ^ : 开头
  • $ : 结尾
  • + : 匹配前面内容出现1次或多次
  • {n} : 出现n次
  • {n,} :出现大于等于n次
  • {n,m} : 出现大于等于n次 小于等于m次
  • [] : 集合,匹配中括号里面的[abc]则是匹配a 或 b 或 c
  • () : 后向引用或当作整体
  • [^] : 取反[^abc]除了a 、除了b、 除了c
  • | : 或者
  • [-] : 表示范围;比如:[0-9],匹配的内容就是0,1,2,3,4,5,6,7,8,9

模式修正符

  • i : 不区分大小写
  • m : 多文本模式
  • s : 单行模式
  • U : 取消贪婪模式
  • x : 忽略模式中的空白符
  • A : 必须以该模式开头
  • D : 模式中的美元元字符仅匹配目标字符串的结尾.如果这个修饰符被设置, 模式中的元字符美元符号仅仅匹配目标字符串的末尾. 如果这个修饰符 没有设置, 当字符串以一个换行符结尾时, 美元符号还会匹配该换行符(但不会匹配之前的任何换行符). 如果设置了修饰符m, 这个修饰符被忽略
  • u : 进行utf-8匹配

后向引用

<?php
    $str = abaasdassdd;
    $pa = /([a-zA-Z])1/;
    echo preg_replace($pa, 7, $str);
    /* 
            小括号:(pattern):匹配对应的pattern,然后将匹配到的内容捕获到自动命名的组里  
            自动命名的组 :使用小括号指定一个子表达式后,匹配这个子表达式的文本可以在表达式或其它程序中作进一步的处理。
                默认情况下,每个分组会自动拥有一个组号,规则是:以分组的左括号为标志,从左向右,第一个分组的组号为1,
                第二个为2,以此类推。
            后向引用:后向引用用于重复搜索前面某个分组匹配的文本。例如,1代表分组1匹配的文本。
    */
    /* 
        在上面的例子中,小括号([a-zA-Z])匹配到的是所有的字母,1的意思就是后向引用,这里只有一个小括号,也就是只有一组,
            所以1就是把小括号里的内容再次匹配一遍,注意,有些人容易钻牛角尖,比如这里第一次匹配的时候,匹配到的是字母a,
            然后会把a再次放到小括号里面匹配一次,后面也一样,容易理解错的就是有些人容易会觉得第一次匹配到的是abaasdassdd,
           然后第二次匹配到的是同样也就是abaasdassdd,不是这么匹配的,这样理解是绝对错误的
  
*/

?>

贪婪模式

$str = <b>abc</b><b>bcd</b>;//匹配每一不b标签
$pattern = /<b>(.*?)</b>/;//.*存在贪婪模式,会一直匹配到最后,加上问号后 取消贪婪模式,匹配一个之后再进行下一个匹配  
preg_replace($pattern,\\1,$str);

//使用以下方法也可以取消贪婪模式
$pattern = /<b>(.*)</b>/U;    //U和?不可以一起用

正则表达式函数

函数名功能
preg_filter 执行一个正则表达式搜索和替换
preg_grep 返回匹配模式的数组条目
preg_match 执行一个正则表达式匹配
preg_match_all 执行一个全局正则表达式匹配
preg_replace_callback_array 传入数组,执行一个正则表达式搜索和替换使用回调
preg_replace_callback 执行一个正则表达式搜索并且使用一个回调进行替换
preg_replace 执行一个正则表达式的搜索和替换
preg_split 通过一个正则表达式分隔字符串

例子

  写出一个正则表达式,取出页面中所有img标签中的src值

$str = <img alt="xxx" src="aaa.jpg" />;
$pattern = /<img.*?src=["‘].*?["‘].*?/?>/;
/**
 * 分析
 * img的标签特性:有<img开头,中间可能有其他属性:所以有<img.*?
 * src标签:src=["‘].*?["‘]  可能是以单引号或双引号
 * 后面可能还有别的属性:.*?
 * 以/> 或 >结尾: /?>
 * 最终拼接成:<img.*?src=["‘].*?["‘].*?/?>
 **/

 

备注:

  1.   正则表达式可以写在单引号里面也可以写在双引号里面,但是双引号有时候解析不出来$符号
  2.   原子:最小的一个匹配单位(放在定界符中),一个正则表达式,至少要有一个原子
  3.   元字符:元字符不能单独使用,主要用途是修饰原子,是用来扩展原子功能的限制功能(放在定界符中)
  4.   模式修正符:就是用来修正正则表达式,模式修正符要写在定界符外面,写在右边
  5.   定界符:除了字母、数字和斜线""之外的任意字符都可以做定界符

 

以上是关于js正则 匹配字符串中除了某些字母之外的所有字符的主要内容,如果未能解决你的问题,请参考以下文章

JS基础 正则表达式

js中的正则表达式常用

正则表达式

java正则表达式(regular)

java正则表达式(regular)

js正则表达式——元字符