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

var str="A b c i am A man A BAB";
var reg=/[^Abc]+/;
var result=reg.exec(str);
if(result==null)
{
alert('请重新输入');
}else{
alert(result);
}
这个例子本意是输出'A','b','c' 之外的任意一个字符,但是运行结果为‘ ’,只有一个空格。
请教大神这是为什么?

要用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('请重新输入');<br}else{<br>alert(result.length);<br>}。

扩展资料:

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

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

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

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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-07-22

1、先获取你的字符串源码,要截取的字符串。

2、利用(([\s\S]+?))匹配<title></title>之间的字符。

3、print_r($arr);输出正则的情况。如下图。

4、调用正则到的文本。

5、整体的代码如下<?php $str = file_get_contents("http://www.baidu.com");preg_match("/<title>(([\s\S]+?))<\/title>/",$str,$arr);echo $arr[1];?> 。

本回答被网友采纳
第2个回答  推荐于2017-11-25

你好,

exec() 方法的功能非常强大,它是一个通用的方法,而且使用起来也比 test() 方法以及支持正则表达式的 String 对象的方法更为复杂。

    如果 exec() 找到了匹配的文本,则返回一个结果数组。(【问题注解】找到一个就返回,所以你的第一个是空格,你的/[^Abc]+/是可以匹配空格的,所以就返回了一个空格~)

    否则,返回 null。

此数组的第 0 个元素是与正则表达式相匹配的文本,第 1 个元素是与 RegExpObject 的第 1 个子表达式相匹配的文本(如果有的话),第 2 个元素是与 RegExpObject 的第 2 个子表达式相匹配的文本(如果有的话),以此类推。除了数组元素和 length 属性之外,exec() 方法还返回两个属性。index 属性声明的是匹配文本的第一个字符的位置。input 属性则存放的是被检索的字符串 string。我们可以看得出,在调用非全局的 RegExp 对象的 exec() 方法时,返回的数组与调用方法 String.match() 返回的数组是相同的。

但是,当 RegExpObject 是一个全局正则表达式时,exec() 的行为就稍微复杂一些。它会在 RegExpObject 的 lastIndex 属性指定的字符处开始检索字符串 string。当 exec() 找到了与表达式相匹配的文本时,在匹配后,它将把 RegExpObject 的 lastIndex 属性设置为匹配文本的最后一个字符的下一个位置。这就是说,您可以通过反复调用 exec() 方法来遍历字符串中的所有匹配文本。当 exec() 再也找不到匹配的文本时,它将返回 null,并把 lastIndex 属性重置为 0。

 

 

可以改成如下循环输出结果:

 

var str="A b c i am A man A BAB";
    var reg=new RegExp("[^Abc]+","g");
    while((result=reg.exec(str))!=null){
          alert(result);

    }

本回答被提问者和网友采纳
第3个回答  2013-05-22
要用String对象的match方法,而且正则匹配模式要写成全局匹配,改成下面代码:
var str="A b c i am A man A BAB";
var reg=/[^Abc]+/g;
//var result=reg.exec(str);
var result=str.match(reg);
if(result==null)
{
alert('请重新输入');
}else{
alert(result.length);
}
相似回答