簡體   English   中英

如何使用正則表達式驗證Java中的數字

[英]How to use regular expression to verify a number in Javascript

/ ^ [0-9] \\ s [0-9] / [0-9] $ | ^ [0-9] / [0-9] $ | ^ [0-9] $ | ^ [0-9] ,[0-9] $ | ^ [0-9]。[0-9] $ /。test(“ 1 1”)為true。 為什么? 我只希望以下類型的字符串對上述檢查返回true:“ 1 1/2”,“ 1/2”,“ 1,2”,“ 1.2”,“ 1”

另外,我需要允許½個字符。 它不是3個字符,而是1個。它在瑞典語鍵盤中可用。

另外,我在asp.net文本框的onchange事件中檢查了這一點。 如果返回false,則我不希望頁面回發並調用textbox的textchanged事件的事件處理程序。 為此,我使用了event.preventDefault(),但是它不起作用。 下面是文本框的標記。

<asp:TextBox ID="gvtxtQty" CssClass="qty_input" runat="server" BackColor="#f4f6f7" Width="100px"
                                                                                    Text='<%# Eval("Qty")%>' OnTextChanged="gvtxtQty_TextChanged"></asp:TextBox>

而且我為文本框注冊了change事件,如下所示。

$(".qty_input").change(function (e) { fnVerifyQuantity(e, this) });

函數fnVerifyQuantity如下:

function fnVerifyQuantity(e,o) {
        var bol = /^[0-9]\s[0-9]\/[0-9]$|^[0-9]\/[0-9]$|^[0-9]$|^[0-9],[0-9]$|^[0-9].[0-9]$/;
        //var bol = /[0-9]\s[0-9]\/[0-9]/;
        var tf = bol.test(o.value);
if(tf=="false") e.preventDefault();

請幫忙。

1 /您的第一個regepx返回true,因為您忘記了最后一部分的轉義點:^ [0-9]。[0-9] $應該是^ [0-9]。[0-9] $

2 /對於½個字符,它是unicode,因為您不能可靠地使用正則表達式來匹配它,我建議您先“標准化”您的值,然后再使用更簡單的正則表達式。

3 /您在上一個測試中有一個錯誤,“ tf”變量是一個布爾值,因此您不應將其與字符串進行比較,您的測試應為“ if(!tf)”或“ if(false == tf)”

這是您應該工作的最后代碼的修改版本:

function fnVerifyQuantity(e,o) {
    var str = o.value.trim().replace("½", ".5").replace("1/2", ".5").replace(" ", ".").replace(/[,.]+/, ".").replace(/^\./, "0.");
    console.log("Aligned string: " + str);
    if( !/^[0-9](\.[0-9])?$/.test(str) ) {
        console.log("not conform");
        e.preventDefault();
    }
    else {
        console.log("conform");
    }
}

暫無
暫無

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

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