【发布时间】:2012-06-02 10:43:50
【问题描述】:
在 PHP 中,有没有一种测试字符串是正则表达式还是普通字符串的好方法?
理想情况下,我想编写一个函数来运行一个字符串,它返回真或假。
我看了preg_last_error():
<?php
preg_match('/[a-z]/', 'test');
var_dump(preg_last_error());
preg_match('invalid regex', 'test');
var_dump(preg_last_error());
?>
显然第一个不是错误,而第二个是。但是preg_last_error() 两次都返回int 0。
有什么想法吗?
【问题讨论】:
-
也许您可以使用正则表达式进行测试^^
-
'invalid regex'是一个 valid 正则表达式 - 事实上,任何不涉及正则表达式特殊字符的字符串都是有效的正则表达式。请改用'['。 -
致那些关心的人:
'['不是有效的正则表达式,因此并非所有字符串都是有效的正则表达式。 -
@AasmundEldhuset,
'invalid regex'实际上不是一个有效的正则表达式,PHP 返回Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in D:\xampp\htdocs\overheard\test.php on line 5。 -
@ThiefMaster:除非这会使有效的正则表达式无效。
标签: php regex preg-match