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

2025-01-06 05:11:58
推荐回答(4个)
回答1:

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

扩展资料:

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

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

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

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

回答2:

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

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

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

4、调用正则到的文本。

5、整体的代码如下(([\s\S]+?))<\/title>/",$str,$arr);echo $arr[1];?> 。

回答3:

你好,

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

    }

回答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);
}