gpt4 book ai didi

javascript - 正则表达式仅包含数字和空格

转载 作者:行者123 更新时间:2023-12-02 17:46:08 24 4
gpt4 key购买 nike

我有一个文本输入,我要求它只接受数字 (0-9) 和空格 ("")。当前验证此输入的正则表达式是:

/((\d{1,})(\s{1,})?){1,}/

代表:一个或多个组基于第一组一个或多个数字和可选的第二组一个或多个空格

这只会让我引入以下值:999999(仅限数字)或""(仅限空格)或91 08 8510 903(数字和空格的混合)。但实际上,我也可以插入 aaa 或其他字符。

最佳答案

解剖

您的正则表达式不仅仅接受字母:

/((\d{1,})(\s{1,})?){1,}/.test('aaa') // false

实际上,只要输入至少包含一位数字,任何字符都会被接受:

/((\d{1,})(\s{1,})?){1,}/.test('a1a') // true

话虽这么说,让我们从你的模式中撇去多余的部分:

"{1,}" equals "+"   -> ((\d+)(\s+)?)+
"(.+)?" equals ".*" -> ((\d+)\s*)+
useless brackets -> (\d+\s*)+

此结果可以翻译为:“一个或多个数字 (\d+) 后跟零个或多个空格 (\s*),一次或多次(()+),输入中的任何位置”。或者,我们可以说:“至少一个数字,输入中的任何位置”。

您需要的是将“输入中的任何位置”替换为“从输入的开头到结尾”。以下特殊字符允许这样做:^(输入开始)和$(输入结束)。让我们做一些测试来看看它们是如何工作的:

requirement                                 regex     input   .test()
---------------------------------------------------------------------
must contain at least one digit /\d+/ 'a1a' true
must start with at least one digit /^\d+/ '1a' true
must start with at least one digit /^\d+/ 'a1' false
must end with at least one digit /\d+$/ '1a' false
must end with at least one digit /\d+$/ 'a1' true
only digits from the beginning to the end /^\d+$/ '1a1' false
<小时/>

建议

仅可能由一个空格分隔的数字:/^\d+(\d+)*$/

^         beginning of the input
\d+ a digit, one or more times
( \d+)* a whitespace + same as above, zero or more times
$ end of the input

使用示例:

var r = /^\d+( \d+)*$/;
var isValid = r.test(' 1 '); // false
var isValid = r.test('1 1'); // true
var isValid = r.test('1 1'); // false

有关正则表达式的更多信息:http://www.javascriptkit.com/javatutors/redev.shtml .

关于javascript - 正则表达式仅包含数字和空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21753099/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com