簡體   English   中英

正則表達式:允許字母,數字和空格(至少包含一個字母或數字)

[英]Regular Expression: Allow letters, numbers, and spaces (with at least one letter or number)

我目前正在使用這個正則表達式^[A-Z0-9 _]*$來接受字母,數字,空格和下划線。 我需要修改它以在字符串中的某處需要至少一個數字或字母。 任何幫助,將不勝感激!

這將用於驗證我的網站的用戶名。 我實際上想支持盡可能多的字符,但只是想確保我阻止代碼注入,並且字符對所有用戶都顯示正常。 因此,我肯定對正則表達式驗證建議持開放態度,這些建議可以支持更廣泛的字符集。

您只需指定當前的RE,然后再輸入一個字母/數字,然后再指定當前的RE:

^[A-Z0-9 _]*[A-Z0-9][A-Z0-9 _]*$

既然你現在已經聲明它們是Javascript RE,那么這里有一個有用的站點,你可以根據輸入數據測試RE。

如果你想要小寫字母:

^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$

要繼續並在那里得到一個觀點,而不是重復使用這些:

[A-Za-z0-9 _]
[A-Za-z0-9]

我有兩個(希望更好)替換這兩個:

[\w ]
[^\W_]

第一個匹配任何單詞字符(字母數字和_ ,以及Unicode)和空格。 第二匹配任何不是一個非文字字符或一個下划線(字母數字只,以及為Unicode)。

如果您不想要Unicode匹配,那么請堅持使用其他答案。 但這些看起來更容易(在我看來)。 在撰寫本文時使用“首選”答案並使用較短的正則表達式給出了我們:

^[\w ]*[^\W_][\w ]*$

也許更具可讀性,也許更少。 當然更短。 你的選擇。

編輯:

就像一個注釋,我在這里假設Perl風格的正則表達式。 你的正則表達式引擎可能支持也可能不支持\\ w和\\ W之類的東西。

編輯2:

使用JS regex測試程序測試了我的鏈接和一些基本示例正常工作。 沒有做任何廣泛的事情,只是想確保\\ w和\\ W在JS中運行良好。

編輯3:

嘗試使用JS regex測試站點測試一些Unicode后,我發現了問題:該頁面使用的是ISO而不是Unicode。 難怪我的日語輸入不匹配。 哦,這應該不難解決:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

或者。 我不知道在JavaScript方面應該做些什么,但我確信這並不難。

^[ _]*[A-Z0-9][A-Z0-9 _]*$

您可以選擇在前面放置一些空格或下划線,然后您需要一個字母或數字,然后需要任意數量的數字,字母,空格或下划線。

只包含空格和下划線的東西將使[A-Z0-9]部分失效。

您可以使用環視

^(?=.*[A-Za-z0-9])[A-Za-z0-9 _]*$

它將提前檢查字符串是否有字母或數字,如果是,它將檢查其余的字符是否符合您的要求。 這可能會有所改進,但它似乎適用於我的測試。

更新:

添加Chris Lutz建議的修改

^(?=.*[^\W_])[\w ]*$/

對我來說@“^ [\\ w] + $”正在工作,允許數字,字母和空格,但需要輸入至少一個字母或數字。

這將驗證特殊字符以及前導和尾隨空格:

var strString = "Your String";

strString.match(/^[A-Za-z0-9][A-Za-z0-9 ]\*[A-Za-z0-9]\*$/)
$("#ValuationName").bind("keypress", function (event) {
    if (event.charCode!=0) {
        var regex = new RegExp("^[a-zA-Z ]+$");
        var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
        if (!regex.test(key)) {
            event.preventDefault();
            return false;
        }
    }
});

您可以將此添加到jquery.validationEngine-en.js文件中

    "onlyLetterNumberSp": {
                "regex": ^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$,
                "alertText": "* No special characters allowed"
          },

並在文本字段中將其命名為

<input type="text" class="form-control validate[required,custom[onlyLetterNumberSp]]"  id="title" name="title" placeholder="Title"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM