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的正则表达式的区别的主要内容,如果未能解决你的问题,请参考以下文章