Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML输入字段受限于正则表达式模式_Javascript_Jquery_Html_Regex - Fatal编程技术网

Javascript 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

我想在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>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个字符。我尝试的代码示例在问题本身中可用。