正则表达式中?=和?:和?!的理解
web 正则表达式 2019-05-10 2357 0
关于本站

“最难不过坚持”

本人承接扒站仿站,php网站维护,病毒查杀,网站编辑,网站改版,html制作

有需要网站维护,改版,病毒查杀,网站编辑,网站备案,html制作等相关的工作可以联系我。
本人有多年相关工作经验,也可提供免费咨询,交个朋友。
有需要探讨问题的朋友,也可以加我微信,共同探讨!
微信:15011482830 QQ:408917339

6407251 2611 39
最新评论
https://jueru.net/
评 留言
:weixiao:
评 留言
:shuijiao: :weiqu: :zhenbang: :leng:
评 留言
:yiwen: :yiwen: :yiwen: :yiwen:
评 EasySass: could not generate CSS file. See Output panel for details.
这个业务逻辑多少都有点奇怪了,阅读浏览次数增值在新闻详情页的控制器方法里setInc,这怎么还写进模型事件里了。如果非要用onAfterRead也可以,把新闻文章的内容单独分出来一个news_content表,然后把它和news做关联,然后给news_content表的onAfterRead事件做增值处理,这样点进新闻页内查询到文章内容时才会触发它。
评 TP6模型事件-查询后onAfterRead不好用
文章标签更多
ThinkPHP (254)
Mysql (58)
DedeCms (33)
jQuery (67)
证件照 (1)
setInc (4)
setDec (4)
onclick (5)

要理解?=和?!,首先需要理解前瞻,后顾,负前瞻,负后顾四个概念:

前瞻:
exp1(?=exp2) 查找exp2前面的exp1
后顾:
(?<=exp2)exp1 查找exp2后面的exp1
负前瞻:
exp1(?!exp2) 查找后面不是exp2的exp1
负后顾:
(?<!=exp2)exp1 查找前面不是exp2的exp1
举例:
js代码示例:
<script>
var str = "中国人";
var str2 = "法国人";
str = str.replace(/(?<=中国)人/, "rr") // 匹配中国人中的人,将其替换为rr,结果为 中国rr
str2 = str2.replace(/(?<=中国)人/, "rr") // 结果为 法国人,因为人前面不是中国,所以无法匹配到
console.log(str);
console.log(str2);
</script>
php代码示例:
<?php
$str = "中国人";
$str2 = "法国人";
echo preg_replace('/(?<=中国)人/','rr',$str); // 中国rr
echo preg_replace('/(?<=中国)人/','rr',$str2); // 法国人
?>

要理解?:则需要理解捕获分组和非捕获分组的概念:
()表示捕获分组,()会把每个分组里的匹配的值保存起来,使用$n(n是一个数字,表示第n个捕获组的内容)
(?:)表示非捕获分组,和捕获分组唯一的区别在于,非捕获分组匹配的值不会保存起来
举例:

js代码示例:

<script>
// 数字格式化 1,123,000
var str = "1234567890";
str = str.replace(/\B(?=(?:\d{3})+(?!\d))/g, ",") // 结果:1,234,567,890,匹配的是后面是3*n个数字的非单词边界(\B)
console.log(str);
</script>
php代码示例:
<?php
$str = "1234567890";
echo preg_replace('/\B(?=(?:\d{3})+(?!\d))/',',',$str); // 1,234,567,890
?>



版权声明:本篇文章来源于网络。 来源链接

相关推荐
正则表达式中\Q和\E的用法
正则表达式 | 2019-05-10 8522
\l 下个字符小写  \L 接着的字符均小写直到\E  \u 下个字符大写  \U 接着的字符均大写直到\E  \Q 在non-word 字符前加上\,直到\E  \E 结束\L,\E和\Q  m/\Q$name\E/:表示元字符常量化, 即在$sizename里的元字符*...
正则表达式命名子组/(?P<num>\d+)/
正则表达式 | 2019-05-10 6455
在 PHP 4.3.3 中,可以对子组使用 (?P<name>pattern) 的语法进行命名。 这个子模式将会在匹配结果中同时以其名称和顺序(数字下标)出现, PHP 5.2.2中又增加了两种味子组命名的语法: (?<name>pattern) 和 (?’name’pattern)。 示例: <...
评论:0条
评论加载中...
发表评论