JS和PHP的正则表达式的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS和PHP的正则表达式的区别相关的知识,希望对你有一定的参考价值。

总体上,php的正则比标准javascript的要强大。
PHP有两套正则库,一是posix兼容库(php5.3之前版本可用),而是perl兼容库(主力库)
perl兼容库中支持而js正则不支持的:
1、支持(?<!和(?<=回程断言
2、许多预置字符类(:alnum:)
3、支持组标识(?<>
4、支持子组同名(?|
5、支持独立子组(?>
6、支持条件子组(?()
7、支持递归子组(?R)
8、支持本地编码,js只支持unicode
9、修正器更多
10、等等等等细节上的丰富。
总之,js的正则库在php正则面前显得只是一个简约的基础库。

编程实现是细节活,粗枝大叶的结果就是问题多多。一定要弄清楚
参考技术A 个别通配符肯定有区别,因为我发现我在js下调试的正则,在PHP下竟然不能用。烦恼中。 参考技术B 正则规则没有什么区别的,只是使用方式不一样而已,正则网上一堆,我觉得没有必要弄那么清楚! 参考技术C 没什么区别!

js正则表达式test方法exec方法与字符串search方法区别

1.正则表达式test方法

test() 方法用于检测一个字符串是否匹配某个模式

返回值:

如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false

 

2、正则表达式exec方法

exec() 方法用于检索字符串中的正则表达式的匹配。

返回值:返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

 

3、字符串search方法

search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。

返回值:stringObject 中第一个与 regexp 相匹配的子串的起始位置。

 

4、示例代码:

<!DOCTYPE html>
<html lang="zh">

    <head>
        <meta charset="UTF-8" />
        <title>JavaScript中字符串的match与replace方法</title>
    </head>

    <body>

        <script type="text/javascript">
            var str = "Visit W3School W3School!"
            //控制台输出6
            console.log(str.search(/W3School/));
            var reg = new RegExp("W3School");
            //控制台输出true 表示如果字符串 中含有与正则表达式匹配的文本
            console.log(reg.test(str));
            //控制台输出:"W3School", index: 6, input: "Visit W3School W3School!"
            //第一个"W3School"表示与正则表达式相匹配的文本
            //第二个index: 6表示匹配文本的第一个字符的位置
            //第三个input: "VVisit W3School W3School!"表示存放的是被检索的字符串 string
            console.log(reg.exec(str));
        </script>
    </body>

</html>

说明:正则表达式的exec使用比较复杂,正则表达式的test方法和字符串的search方法比较简洁

以上是关于JS和PHP的正则表达式的区别的主要内容,如果未能解决你的问题,请参考以下文章

javascript和php的正则表达式有区别吗

php用正则表达式怎么取双引号里面的内容??

js正则表达式(.+)和(.+?)的区别

请问java的正则表达式和php的正则表达式通用吗

PHP正则表达式的使用技巧

转转转---js正则表达exec与match的区别说明