2010-03-19 47 views
0

我無法弄清楚如何從我的Javscript中得到與我的PHP相同的結果。特別是,Javascript總是捨棄反斜槓。請忽略隨機的正反斜槓;我把它們放在那裏,這樣我就可以在Windows系統或任何其他系統上覆蓋我的基礎。輸出:在Javascript和PHP問題中匹配正則表達式

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

我將不勝感激任何幫助!

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

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

回答

3

您的問題是你沒有逃避在你的JS字符串中的反斜槓,你應該總是做(即使是在PHP),如果你的意思是一個反斜槓。

例子:

var path = "/root\wp-cont ent\@*%'[email protected][email protected]%$&^(@#@''mage6.jpg:"; 
alert(path); 
path = "/root\\wp-cont ent\\@*%'[email protected][email protected]%$&^(@#@''mage6.jpg:"; 
alert(path); 
+0

感謝您的幫助! – Frankie 2010-03-19 17:24:04

+0

@Frankie:既然我看到你是新來的,我只想讓你知道左邊有一個答案複選框,點擊你所滿意的答案。 :) – Qtax 2010-03-19 18:04:10

+0

+1。對於字符串文字中的反斜槓,PHP是寬容的(閱讀:令人困惑)。正如Qtax所說的那樣,無論如何,請幫助自己一個忙,並逃脫它們。 – 2010-03-20 00:58:23

0

是啊,Qtax是正確的,那麼你可以使用這個:
var regx = /[^a-zA-Z0-9\.\/-\\]/g;

+0

無需轉義char類中的點。 – Qtax 2010-03-19 17:08:47