在Javascript和PHP问题中匹配正则表达式

时间:2010-03-19 16:37:56

标签: php javascript regex

我无法弄清楚如何从我的PHP中获取与Javscript相同的结果。特别是,Javascript总是省略反斜杠。请忽略随机前进和反斜杠;我把它们放在那里,以便我可以在Windows系统或任何其他系统上覆盖我的基础。输出:

Input String: "/root\wp-cont  ent\@*%'i@$@%$&^(@#@''mage6.jpg:"    
/root\wp-content\image6.jpg (PHP Output)
/rootwp-contentimage6.jpg (Javscript Output)

我将不胜感激任何帮助!

PHP:
<?php
$path ="/root\wp-cont  ent\@*%'i@$@%$&^(@#@''mage6.jpg:";
 $path = preg_replace("/[^a-zA-Z0-9\\\\\/\.-]/", "", $path);
 echo $path;
?>

Javascript:
<script type="text/javascript">
var path = "/root\wp-cont  ent\@*%'i@$@%$&^(@#@''mage6.jpg:"; //exact same string as PHP
var regx = /[^a-zA-Z0-9\.\/-]/g;
path = path.replace(regx,"");
document.write("<br>"+path);
</script>

2 个答案:

答案 0 :(得分:3)

你的问题是你没有逃避JS字符串中的反斜杠,你应该总是这样做(即使在PHP中),如果你的意思是反斜杠。

示例:

var path = "/root\wp-cont  ent\@*%'i@$@%$&^(@#@''mage6.jpg:";
alert(path);
path = "/root\\wp-cont  ent\\@*%'i@$@%$&^(@#@''mage6.jpg:";
alert(path);

答案 1 :(得分:0)

是的,Qtax是正确的,那么你可以使用这个:
var regx = /[^a-zA-Z0-9\.\/-\\]/g;