2010-06-30 38 views
0

出於某種原因,我似乎無法找到一個好的答案。如何使用JavaScript中的RegExp從字符串中刪除脫字符(^)?

我一直在試圖逃出插入符號(\ ^),並使用十六進制,八進制,並使用\ XDD,\ DDDD等其他編碼的字符...

但是我更換正則表達式不會用任何東西替換脫字符(^)。它似乎只是打破了表達。

這裏是我使用的代碼:


var field,myExp;  

// \x5E is supposed to represent the caret in Hex... 
    myExp =/*[^a-z^A-Z^0-9\s\x5E]/gi; 

field = field.replace(myExp,""); 
alert(field); 

幫助!

+0

你在做什麼? – SLaks 2010-06-30 18:46:36

回答

0

我找到了答案,但你們都幫助我到達那裏。謝謝!

我認爲發生了什麼事情是因爲我的排除(^)使用了太多次,因此排除了我的排除組......因爲組之間沒有分隔符,所以第一個就是這樣做的。原產地: repExp =/* [^ a-z^A-Z^0-9]/gi;

FINAL REGEXP: repExp =/* [^ a-zA-Z0-9]/gi;

以上過濾掉任何不是來自字符串的leter(a-zA-Z)或數字(0-9)。

謝謝,人!

P.S.初始「/」後面的空格在那裏,因爲某些原因,Dreamweaver將其視爲評論的開始。 :-(

+0

RegExp只使用'['作爲排斥組旁邊的'^'*右邊*,所以你的克拉不是「彼此取消」。相反,你在KEEP組裏有一個^。因爲你的正則表達式是以[[^'開始的,所以'[^ ...]'中的任何內容都會被保留(包括'^'s)。你的第二個表達是說,保持a-z,A-Z,0-9。你的第一個表達是說保留a-z,^,A-Z,^,0-9。所以它'^' – Rob 2010-06-30 23:11:19

+0

'/ pattern/gi'中的'/ i'修飾符表示忽略大小寫,所以你不需要'[^ a-zA-Z0-9]' - 只需'/ * [^A-Z0-9]/gi'應該做的。我也想知道領先的'/ *' - 它不應該是* dot * star'/.* [A-Z0-9]/gi'嗎?我使用太多的正則表達式,所以可能會混淆它們。 – 2010-07-01 00:15:15

+0

關於不區分大小寫的標誌的好處。我知道這是多餘的,但在場合,我忘了設置案例標誌......因此,無論以任何方式工作對我們這些心不在焉的人來說都只是一種獎勵。 – exoboy 2010-07-01 13:11:20

1

^開頭的字符組是排除組,將每一個字符不在[]匹配。

如果你想刪除任何字母,數字,或^,當你插入符如在[]中設置的第一個字符改變正則表達式

myExp =/*[a-zA-Z0-9^\s]/gi; 
+0

謝謝,雖然我已經意識到這個事實,有些時候用戶可能會無意中將它輸入到表單域 我想確保我的域僅包含字母和數字,不包含空格,標點符號或任何其他特殊字符 排除包含我想保留的小列表比列出所有我想要的項目的詳盡列表更有效刪除.... – exoboy 2010-06-30 21:15:02

0

,它的意思是「不」 - 但只在一開始。所以你的正則表達式意思是「(空格跟隨)任何不是a-z,或者脫字號,或者A-Z,或者脫字號,或者0-9等的東西」。刪除所有,但第一個插入符號,你可能有更多的運氣:-)

+0

其實,這意味着排除,但我知道你的意思。謝謝你的回覆! – exoboy 2010-06-30 21:23:12

0

你想要替換或保留所有AZ,0-9,空格和克拉?

如果你想留住他們,只使用一個^在表達的開始,像這樣:

[^a-zA-Z0-9\s^]

如果你想更換他們所有包括克拉,使用方法:
[a-zA-Z0-9^\s]

編輯(更新答案響應評論):

使用
[^a-zA-Z0-9]
匹配和更換不屬於A-Z,A-Z,0-9所有字符。

注意:您應該使用相同的表達式服務器端來驗證這些表單字段,因爲人們可能會禁用JavaScript,或者只是混淆POST值來混淆數據庫。

+0

我想只保留az,AZ,0-9。我想刪除/替換所有其他字符。 – exoboy 2010-06-30 21:16:40

+1

使用'[^ a-zA-Z0-9]'匹配任何不是(^)az,AZ,0-9的。所以.r eplace將取代任何匹配的東西(這不是a-zA-Z0-9)。 – Rob 2010-06-30 23:01:51

2

的代碼片段你給是相當混亂,但基於問題的標題,如果你只是想別的東西,那可以這樣實現替換字符^ ...

var str1 = "test^123"; 
var str2 = str1.replace(/\^/g, "\x005E"); 
alert(str2); 
+0

對不起,我忘了給「字段」的示例值。 但是,我想我已經弄清楚了。感謝您的迴應! – exoboy 2010-06-30 21:19:42

相關問題