如何区分文字字符串和正则表达式模式?

时间:2019-02-03 18:11:59

标签: php regex

是否可以使用函数或方法确定字符串是否为正则表达式模式?

我尝试使用preg_replace,但是当它不是模式时,会产生错误

$pattern1 = '/\/static\/(.*)/'
$pattern2 = '/api/test'
print preg_replace($pattern2, 'something', 'something trivial'); // Returns a No ending delimiter '\/'

我希望我可以传递一些东西,它会让我知道它是否确实是正则表达式,$pattern1

找到的编辑解决方案:与stackoverflow所相信的相反,“重复”问题没有我的问题的答案。不推荐使用2个最受好评的解决方案。

我创建的解决方案要好得多。要使用PHP的preg函数运行正则表达式匹配,模式字符串必须用delimiters ~, \, #, %, +之一包装。因此,您基本上必须在模式字符串上运行preg_match来查看它是否被定界符包裹

preg_match('^/(\/|\#|\~|\%|\+)(.*)(\1)/$', $pattern1);

这将为正则表达式模式(如$pattern1)提供一个已定义的返回值,并为$pattern2等文本字符串提供一个虚假的返回值

0 个答案:

没有答案