regex 忽略数字之间空格的正则表达式[重复]

exdqitrt  于 2023-01-18  发布在  其他
关注(0)|答案(5)|浏览(178)
    • 此问题在此处已有答案**:

Ignoring white space for a Regex match(3个答案)
昨天关门了。
有没有一种简单的方法可以忽略正则表达式中数字之间的空格?
我希望一个正则表达式匹配任何10位数字,包括数字之间的空格。
例如,以下3个示例将匹配:
1.小行星48745
1.四八七四五二六三九五
1.小行星48745
^\d{10}$是当前的正则表达式,我希望我需要在某个地方使用\s,但不确定如何使用。

y53ybaqx

y53ybaqx1#

您可以使用^( *\d){10} *$来匹配10个数字,这些数字之前/之后或之间带有空格字符。

雷格斯珀
如果您只想允许中间有空格,而不允许前后有空格,则可以改用^\d( *\d){9}$

雷格斯珀
也许更好的理解是先删除空格字符。

string.replace(/ +/g, "").match(/^\d{10}$/)

如果你想匹配所有的空格(空格、换行符、制表符等),而不仅仅是空格,你可以用\s替换正则表达式中的空格。

twh00eeo

twh00eeo2#

可以使用以下正则表达式:

^(\d\s*){9}\d$

请注意,这与前导或尾随空格不匹配,如果还需要匹配这些情况,只需在正则表达式前后添加\s*(例如^\s*(\d\s*){9}\d\s*$)。
如果需要,可以在regex101中交互地检查这个regexp并在那里生成代码。

06odsfpq

06odsfpq3#

我可能倾向于在检查输入的位数是否正确之前去掉空格:

var input = "4874 526 395";
if (/^\d{10}$/.test(input.replace(/\s+/g, ""))) {
    console.log("MATCH");
}
f1tvaqid

f1tvaqid4#

使用下面的代码,你可以消除数字之间的差距,即使你有字符串之间
字符串repl =“111 222 333”。替换全部(“(?〈=\d)+(?=\d)",“”);//=〉世界你好!
这个正则表达式“(?〈=\d)+(?=\d)”确保匹配前后都有数字的空格。

cs7cruho

cs7cruho5#

这里有一个建议的方法来实现这一点:How to ignore whitespace in a regular expression subject string?
但在这种情况下,用空字符串替换所有空格并使用正则表达式会更容易:

s.replaceAll("\\s+","").matches("^\\d{10}$")

相关问题