2014-01-15 28 views
0

我有一個帶有輸入框和按鈕的HTML表單。我綁定了一個提交事件,但是當我嘗試將輸入框的值與正則表達式(/\w+/)相匹配時,我得到的結果不一致:如何在JQuery提交函數中獲取輸入標籤的原始值?

1)它看起來像它將值更改爲URI編碼字符(例如,它用+代替空格)。
2)即使它將值更改爲URI編碼字符,如何才能將正則表達式(/\w+/)與+或其他非字母數字符號匹配?

如何獲取原始值?

我的jQuery代碼:

$('#form-send-username').on('submit', registrationFormListener); 
function registrationFormListener(event) { 
    event.preventDefault(); 
    console.log($('#user-input-box').val());   // Print raw value 
    if($('#user-input-box').val().match(/\w+/)) {  // Even matches non-alphanumeric characters 
     ... 
    } 
} 
+1

您需要錨定的正則表達式,即'/^\ w + $ /'。至於原始值,我沒有看到空格被'+'替代(儘管如此,還沒有用你的代碼進行測試)。 – nhahtdh

+0

哦對!謝謝,那是行得通的。關於用+替換空格,如果您提交包含空格的值,則ajax表單將返回URI編碼的值。無論如何,現在這不是一個問題,因爲我可以檢查你所建議的正則表達式。所以,再次感謝你!請將您的評論放在答案框中,以便我可以選擇它作爲正確的答案。 –

回答

2

您當前的正則表達式/\w+/只檢查是否存在字符串中的一個單詞*字符。

* \w+匹配一個或多個單詞字符,但只要字符串有一個單詞字符,就可以找到匹配,從而驗證通過。

您需要^(字符串的開頭)和$(字符串的結束)以固定的正則表達式,以確保整個字符串包含單詞字符:

/^\w+$/ 
+0

再次感謝您! ;) –