需要帮助使正则表达式与这些条件匹配(请原谅我可能令人困惑的措辞)。
- 仅匹配以数字或点开头的
- 匹配数字、点和中间的空格
- 匹配到第一个空格,如果非数字跟在那个空格之后 如果空格后只有数字,则匹配它 如果数字后面有除点、空格或数字以外的任何字符,则返回 null。
到目前为止我已经明白了,但它仍然允许特殊字符跟在数字后面。
/^[0-9\.][0-9\.\s]+(?!\w)/
示例结果
"1500" should return "1500"
"1500 0" should return "1500 0"
"1500 a" should return "1500"
"1500&" SHOULD return null, but so far returns "1500"
"1500a" should return null, as it should.
最佳答案
你可以使用
/^[\d.][\d\s.]*(?!\S)/
参见 regex demo和 regex graph :
详情
^
- 字符串的开始[\d.]
- 一个数字或一个点[\d\s.]*
- 0 个或更多数字、空格、点,尽可能多(?!\S)
- 后跟空格或字符串结尾。
JS 演示:
var strs = ['1500 0', '1500 a', '1500&', '1500a'];
var rx = /^[\d.][\d\s.]*(?!\S)/;
for (var i=0; i < strs.length; i++) {
var m = strs[i].match(rx);
if (m) {
console.log(strs[i], "=>", m[0]);
} else {
console.log(strs[i], "=> NO MATCH");
}
}
关于javascript - 正则表达式:如何匹配后面没有任何字符但允许空格后的字符的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57302491/