php正则表达式 包含特殊字符,正则表达式 匹配 含有特殊字符
$info = array(
"https://segmentfault.com/q/1010000003711515",
"http://www.baidu.com?admin.php&jasdhjas=asjd",
'php $a=0; echo "abc";',
"假如这是第三个....*^%$#@!()[]{}",
);
foreach ($info as $key => $value) {
$message = "https://segmentfault.com/q/1010000003711515";
$preg = "/^".$value."$/";
if (preg_match($preg, $message)) {
echo '匹配成功';
break;
}
}
遍历$info数组,为其每一个字符串前后加上/^,$/ ,变成一个正则表达式,去匹配提供的$message,但是因为$info里面的字符串可能有特殊字符,造成出错,所以请问有没有什么办法把$info的每个字符串转义?
难道只能在定义$info的时候就转义吗?
回复内容:
$info = array(
"https://segmentfault.com/q/1010000003711515",
"http://www.baidu.com?admin.php&jasdhjas=asjd",
'php $a=0; echo "abc";',
"假如这是第三个....*^%$#@!()[]{}",
);
foreach ($info as $key => $value) {
$message = "https://segmentfault.com/q/1010000003711515";
$preg = "/^".$value."$/";
if (preg_match($preg, $message)) {
echo '匹配成功';
break;
}
}
遍历$info数组,为其每一个字符串前后加上/^,$/ ,变成一个正则表达式,去匹配提供的$message,但是因为$info里面的字符串可能有特殊字符,造成出错,所以请问有没有什么办法把$info的每个字符串转义?
难道只能在定义$info的时候就转义吗?
/在正则表达式里面有特殊含义,所以后面的'/'就会出错,你需要在前面加上反斜杠\取消转义。
定义了$preg, 却用的是$info, 这是一个错误
还有就是正则的通配符都是要用 \ 进行转义的,
你上面的例子应该改写成
$preg = "/^https:\/\/segmentfault\.com\/q\/1010000003711515$/";
$test = "https://segmentfault.com/q/1010000003711515";
preg_match($preg, $test);
我觉得你直接说你要干嘛比较好,感觉你思路错了。
$preg 是一个未知的变量
你这个前提太大了
如果这些表达式是程序员录入的,那么是程序员的问题。
如果这些表达式是用户录入的,那么应该在录入界面告知用户此处是正则表达式,让他自己注意。
你可以使用js转义正则表达式的特殊字符,但是可能造成2次转义(比如用户本来就输入已转义的内容http:|b4831e42daf1db770cdbc01d41578e020|/.+)
例子
document.getElementById('test').value = (new RegExp(document.getElementById('test').value)).toString();
此外,你在程序中强行增加/^和$/也可能产生问题。
相关标签:php
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
php正则表达式 包含特殊字符,正则表达式 匹配 含有特殊字符相关推荐
- 正则表达式-匹配各种特殊字符
匹配各种特殊字符的正则表达式 ((?=[\x21-\x7e]+)[^A-Za-z0-9])x21-\x7e]+)[^A-Za-z0-9]) 匹配所有键盘上可见的非字母和数字的符号 var patrn ...
- php正则表达式 包含特殊字符,php正则表达式的特殊字符含义
一篇关于正则表达式特殊字符含义的文章,希望对大家有所帮助. 字符/ 意义:对于字符,通常表示按字面意义,指出接着的字符为特殊字符,不作解释. 例如:/b/匹配字符'b',通过在b 前面加一个反斜杠,也 ...
- android验证数字字母和特殊字符,正则表达式必须包含字母数字和特殊字符
正则表达式要实现必须包含字母数字和特殊字符,那么,我们就必须判断该字符串中: 1. 包含字母 2. 包含数字 3. 包含特殊字符 为了简化问题,这里对特殊字符做下限定,指:_-@&=,大家在实 ...
- java -正则表达式(是否含有特殊字符,英文或者数字)
/*** 判断是否含有特殊字符** @param str* @return true为包含,false为不包含*/ public static boolean isSpecialChar(String ...
- ES6/05/正则表达式简介,正则表达式如何使用,正则表达式中的特殊字符(边界符,量词符),预定义类,正则表达式中的替换
正则表达式 目标:1,说出正则表达式的作用 2,能使用一些简单的正则表达式 3,使用正则表达式对表单进行验证 4,使用正则表达式替换内容 正则表达式简介 正则表达式(Regular Expressio ...
- java正则表达式替换特殊字符_使用正则表达式替换报表名称中的特殊字符(推荐)...
正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表通常被用来检索.替换那些符合某个模式(规则)的文 ...
- 万物之始正则表达式全解析三部曲(中篇)-正则表达式运算符优先级及匹配规则
前言 各位小伙伴大家好,接下来几天时间,我会从多个角度对正则表达式进行系统阐述,让你了解正则表达式的前世今生. 该系列文章上篇 万物之始正则表达式全解析三部曲(上篇)-正则表达式基础知识及语法 以下是 ...
- 正则表达式 String中正则匹配的方法
目录 基础 常用的一些 特殊字符 非打印字符 元字符 表达式 量词 或者 创建正则表达式 实例方法 字符串中的正则方法 字符串的 match()方法 字符串的 search() 字符串的 split( ...
- 正则表达式、常用的匹配总结
1.正则表达式:我的理解就是,记录文本规则的代码,我主要运用它在.net表单验证中. 2.学习正则表达是的工具下载链接:https://sourceforge.net/projects/regexte ...
最新文章
- Tmux终端复用工具小解
- 无法加载 DLL“oramts.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)
- fatal error C1083: 无法打开预编译头文件:“Debug\a.pch”:No such file or directory
- cmake 判断操作系统平台
- Java 获取文件目录最终的修改时间
- 线性插值改变图像尺寸_【图像分割模型】实例分割模型—DeepMask
- POJ1664 放苹果【递推+记忆化递归】
- pytorch中lstm用法详解(二)
- 《NLTK基础教程——用NLTK和Python库构建机器学习应用》——2.10 练习
- oracle获取日期所在周,ORACLE 获取某一日期所在周的周一
- selenium录制百度3D地图
- mysql 关键字 desc_mysql数据库表字段使用DESC等关键字报错及解决方法
- java中什么是线程不安全给出一个例子
- 一个可以把单张静态照片转化成 3D 图片的AI 工具
- 手把手教大家在mac上用VMWare虚拟机装Ubuntu
- 一文读懂 | Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈
- Botnet趋势漏洞利用状况分析
- 二次规划算法学习笔记
- 儿时经典电影回顾,你看过几部?
- 手把手教你在百度aistuio训练人工智能模型