运行Linux(Ubuntu 11.10)时,相同的正则表达式在JavaScript中有效,但当&
包含在PHP中计算的字符串中时,该表达式将失败。我的意思是:
JavaScript正则表达式:
regex = /^(?:[a-zA-Z0-9 ',.@&!+-]{3,50})$/;
PHP正则表达式:
$settings['regex_name'] = "/^(?:[a-zA-Z0-9 ',.@&!+-]{3,50})$/";
当代码在浏览器中运行以验证字符串(例如D & L Auto Sales
)时,JavaScript会匹配整个字符串。但是,当服务器端代码试图在同一字符串上匹配时,它会失败。
以前有人碰到过这个吗?
编辑:这是运行regex:的PHP代码
function validated_array(&$array) {
global $settings;
$filterDefinitions = array( "name" => array('filter' => FILTER_VALIDATE_REGEXP,
'options' => array('regexp' => $settings['regex_name']),
...
);
$retVal = filter_var_array($array, $filterDefinitions);
当代码使用D & L Auto Sales
运行时,$retVal['name']为空。但是,当我删除&
时,$retVal['name']有一个值。
您确定&
在HTML中没有编码为&
吗?
除此之外,Perl兼容正则表达式在JavaScript和PHP之间具有很高的兼容性(两者都支持),尤其是您在示例中给出的那个。