Javascript 仅限正则表达式的数字和空格
我有一个文本输入,我要求它只接受数字(0-9)和空格(“”)。 验证此输入的当前regexp为:Javascript 仅限正则表达式的数字和空格,javascript,regex,validation,Javascript,Regex,Validation,我有一个文本输入,我要求它只接受数字(0-9)和空格(“”)。 验证此输入的当前regexp为: /((\d{1,})(\s{1,})?){1,}/ 它代表:一个或多个组基于一个或多个数字的第一组和一个或多个空格的可选第二组 这将只允许我引入以下值:999999(仅限数字)或”(仅限空格)或91 08 8510 903(数字和空格的混合)。 但实际上,我也可以插入aaa或其他字符。试试这个 $pattern = '/^[0-9 ]+$/'; if ( preg_match ($patte
/((\d{1,})(\s{1,})?){1,}/
它代表:一个或多个组基于一个或多个数字的第一组和一个或多个空格的可选第二组
这将只允许我引入以下值:999999
(仅限数字)或”
(仅限空格)或91 08 8510 903
(数字和空格的混合)。
但实际上,我也可以插入aaa
或其他字符。试试这个
$pattern = '/^[0-9 ]+$/';
if ( preg_match ($pattern, $text) )
{
echo 'allowed';
}
试试这个正则表达式
/(\d+\s*\d*)+$/
在这里将结果可视化
我已经在网上测试过了
上面的正则表达式不接受开头的空格。您至少需要一个数字。如果要匹配开头的空格,请将其更改为(\d*\s*\d*)+$,这也将接受空格
正则表达式不仅接受字母:
/((\d{1,})(\s{1,})?){1,}/.test('aaa') // false
实际上,如果输入至少包含一个数字,则接受任何字符:
/((\d{1,})(\s{1,})?){1,}/.test('a1a') // true
也就是说,让我们从你的模式中撇去脂肪:
“{1,}”等于“+”->((\d+)(\s+))+
“(.+)?”等于“.*”->((\d+)\s*)+
无用的括号->(\d+\s*)+
此结果可以转换为:“一个或多个数字(\d+
),后跟零个或多个空格(\s*
),一次或多次(()+
),输入中的任意位置”。或者,我们可以说:“输入中的任何位置至少有一个数字”
您需要的是将“输入中的任何位置”替换为“从输入的开始到结束”。以下特殊字符允许此操作:^
(输入开始)和$
(输入结束)。让我们做一系列测试,看看它们是如何工作的:
requirement regex input.test()
---------------------------------------------------------------------
必须至少包含一位数字/\d+/'a1a'true
必须至少以一位数字/^\d+/'1a'true开头
必须至少以一位数字开头/^\d+/'a1'false
必须以至少一位数字/\d+$/'1a'false结尾
必须以至少一位数字/\d+$/'a1'true结尾
仅从开头到结尾的数字/^\d+$/'1a1'为假
暗示 只有可能由一个空格分隔的数字:
/^\d+(\d+)*$/
^输入的开头
\d+一个数字,一次或多次
(\d+)*a空格+同上,零次或多次
$输入结束
用法示例:
var r = /^\d+( \d+)*$/;
var isValid = r.test(' 1 '); // false
var isValid = r.test('1 1'); // true
var isValid = r.test('1 1'); // false
有关正则表达式的详细信息:.仅
space
char?或所有空白字符,如选项卡
。。。允许吗?您只需使用+
而不是{1,}
。它有相同的含义。你想要一个允许数字和空间的正则表达式。数字和空间有限制吗?只有空格字符,没有制表符或其他。没有限制,把它标记为正确的答案,这样它可以在将来帮助别人。此输入:“04 06 09880”返回为无效。当正则表达式的答案以“Try This one…”开头时,您就知道它将失败:-)失败在哪里?你能提供一些细节吗?