【问题标题】:Matching Regular Expression in Javascript and PHP problemJavascript和PHP中的正则表达式匹配问题
【发布时间】:2010-03-19 16:37:55
【问题描述】:

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

Input String: "/root\wp-cont  ent\@*%'i@$@%$&^(@#@''mage6.jpg:"    
/root\wp-content\image6.jpg (PHP Output)
/rootwp-contentimage6.jpg (Javascript 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>

【问题讨论】:

    标签: php javascript regex


    【解决方案1】:

    您的问题是您没有转义 JS 字符串中的反斜杠,如果您的意思是反斜杠,您应该始终这样做(即使在 PHP 中)。

    例子:

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

    【讨论】:

    • @Frankie:因为我看到你是新来的,所以我只想让你知道这里左边有一个答案复选框,单击它以获得你满意的答案。 :)
    • +1。 PHP 对字符串文字中的反斜杠表示宽容(阅读:令人困惑)。正如 Qtax 所说,帮自己一个忙,无论如何都要避开它们。
    【解决方案2】:

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

    【讨论】:

    • char类中的点不需要转义。
    猜你喜欢
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    相关资源
    最近更新 更多