Javascript HTML输入字段受限于正则表达式模式
我想在HTML输入字段中限制用户输入 它是一个接受十进制重量和单位(千克、磅、克、吨等)的字段 以下是几个有效的示例输入:Javascript HTML输入字段受限于正则表达式模式,javascript,jquery,html,regex,Javascript,Jquery,Html,Regex,我想在HTML输入字段中限制用户输入 它是一个接受十进制重量和单位(千克、磅、克、吨等)的字段 以下是几个有效的示例输入: 10.45 kg 125.5 kg 120.35 lbs 160 lbs 1200.16 g 24.6 t 我正在使用以下URL中提到的JQuery插件: 但它不能处理复杂的模式。 有人能帮我用正则表达式来实现这个结果吗 请在下面找到完整的代码: <!DOCTYPE HTML> <html> <head> <title>T
10.45 kg
125.5 kg
120.35 lbs
160 lbs
1200.16 g
24.6 t
我正在使用以下URL中提到的JQuery插件:
但它不能处理复杂的模式。
有人能帮我用正则表达式来实现这个结果吗
请在下面找到完整的代码:
<!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>
试验
重量:
在这种情况下,下面的答案不正确。正如@Stribizev所评论的,您使用的插件不允许复杂的正则表达式验证。它根据正则表达式检查您键入的每个字符,而不是验证整个字段
不幸的是,您的插件似乎不可能进行这种验证
以下内容与您的所有示例相匹配:
^\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)。如果使用HTML5是一个选项,那么您可以在输入上包括一个模式属性,例如使用Pranav C Balan的regex:
<input type="text" name="weight" value="" pattern="^\d+(?:\.\d+)?\s*(?:kg|lbs|t)$" />
\d+(?:。\d+)\s(?:kg | lbs | t)
一旦确定了参数,RegExp本身应该不会很困难。。。盎司(盎司)怎么样?120.35磅真的是你想要的吗?像那样混合使用英制和公制?与任何RegExp一样,首先计算出您真正想要的内容。^\d+(?:。.d+)\s(?:kg | lbs | t)$
这对插件不起作用,下面是它描述中的一段摘录:只有允许的字符将插入到输入字段中,其他字符将被默默删除。它一次只检查1个字符。我尝试的代码示例在问题本身中可用。