簡體   English   中英

HTML輸入字段受正則表達式模式限制

[英]HTML input field restricted with regular expression pattern

我想限制HTML輸入字段中的用戶輸入。

它是一個接受十進制重量和單位(kg,lbs,g,t等)的字段。

以下是一些有效的示例輸入:

10.45 kg
125.5 kg
120.35 lbs
160 lbs
1200.16 g
24.6 t

我正在使用以下URL中提到的JQuery插件: http//www.thimbleopensource.com/tutorials-snippets/jquery-plugin-filter-text-input

但它不適用於復雜的模式。 任何人都可以幫我用正則表達式來實現結果嗎?

找到下面的完整代碼:

<!DOCTYPE HTML>
<html>
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<script src="/js/jquery/jquery-2.1.4.js" type="text/javascript"></script>
<script src="/js/jquery/jquery.filter_input.js" type="text/javascript"></script>

<script type="text/javascript">
<!--//

$(document).ready(function(){
   $('#input_2').filter_input({ regex: '\d+(?:.\d+)?\s(?:kg|lbs|t)' });
});

//-->
</script>

</head>

<body>

Weight: <input id="input_2" type="text" size="20" />

</body>
</html>

如果使用HTML5是一個選項,那么你可以在輸入中包含一個模式屬性,例如使用Pranav C Balan的正則表達式:

<input type="text" name="weight" value="" pattern="^\d+(?:\.\d+)?\s*(?:kg|lbs|t)$" />

在這種情況下,以下不是正確的答案。 正如@stribizhev所評論的那樣,您使用的插件不允許復雜的正則表達式驗證。 它會根據正則表達式檢查您鍵入的每個字符,而不是整體驗證字段。

遺憾的是,這種驗證似乎不適用於您的插件。


以下匹配您的所有示例:

^\d+(\.\d+)?\s(g|lbs?|kg|t)$

這分解如下:

^                # Matches start of string
\d+              # 1 or more digits
(\.\d+)?         # Optionally followed by a decimal point and more digits
\s               # Whitespace
(g|lbs?|kg|t)    # Any of g, lb, lbs, kg, t
$                # Match end of string

這里的例子(regex101.com)。

暫無
暫無

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

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