Javascript 正则表达式:如何匹配不后跟任何字符但允许空格后有字符的数字?
需要帮助使正则表达式与这些条件匹配(请原谅我可能混淆的措辞)Javascript 正则表达式:如何匹配不后跟任何字符但允许空格后有字符的数字?,javascript,regex,Javascript,Regex,需要帮助使正则表达式与这些条件匹配(请原谅我可能混淆的措辞) 仅当以数字或点开头时匹配 匹配数字、点和中间的空白 匹配直到第一个空格(如果非数字跟随该空格) 如果只有数字跟在空格后面,那么匹配它 如果除点、空格或数字以外的任何字符跟在数字后面,则返回null 到目前为止,我已经得到了这个,但它仍然允许特殊字符跟随后面的数字 /^[0-9\.][0-9\.\s]+(?!\w)/ 样本结果 "1500" should return "1500" "1500 0" should return "15
/^[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\.]
匹配数字或点的字符数[0-9\.]+
匹配任意数量的数字或点(\s(?=\w)\d*)
匹配空格,查找字母数字字符和0或更多数字|$
或字符串结尾(如果不匹配条件4)let match=null,pattern=/^[\d\.][0-9\.]+((\s(?=\w)\d*)|$)/;
匹配='1500 0'。匹配(模式)| |[null]
console.log(匹配[0])
匹配='1500'。匹配(模式)| |[null]
console.log(匹配[0])
匹配='1500&'。匹配(模式)| |[null]
console.log(匹配[0])
匹配='1500 a'。匹配(模式)| |[null]
console.log(匹配[0])
匹配='1500a'。匹配(模式)| |[null]
console.log(匹配[0])
您可以使用
/^[\d.][\d\s.]*(?!\S)/
请参阅和:
详细信息
-字符串的开头^
-数字或点[\d.]
-0或更多数字、空格、点,尽可能多[\d\s.]*
-后跟空格或字符串结尾(?!\S)
var-strs=['15000','1500a','1500&','1500a'];
变量rx=/^[\d.][\d\s.]*(?!\s)/;
对于(变量i=0;i”,m[0]);
}否则{
console.log(strs[i],“=>不匹配”);
}
}
FYI,你不需要在一个字符类中转义
,什么应该返回1500 a
(有几个空格)?@Jarod42只是我猜的数字,但我的输入不会给我多个空格,所以这并不重要。
/^[\d.][\d\s.]*(?!\S)/