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

varstr="AbciamAmanABAB";varreg=/[^Abc]+/;varresult=reg.exec(str);if(result==null){ale... 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' 之外的任意一个字符,但是运行结果为‘ ’,只有一个空格。
请教大神这是为什么?
展开
 我来答
stone李想
2019-10-23 · TA获得超过1.9万个赞
知道答主
回答量:1
采纳率:0%
帮助的人:683
展开全部

要用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

百度网友faadf46
高粉答主

2019-07-22 · 说的都是干货,快来关注
知道答主
回答量:4556
采纳率:0%
帮助的人:73.5万
展开全部

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];?> 。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
扎俊
推荐于2017-11-25 · 知道合伙人互联网行家
扎俊
知道合伙人互联网行家
采纳数:366 获赞数:1525
涉猎C#;C++,vb,vb script,asp,PHP,JS,w3c,网站运营、推广等

向TA提问 私信TA
展开全部

你好,

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);

    }

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百夫子
2013-05-22 · 超过16用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:26.4万
展开全部
要用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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式