繁体   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