Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式:如何匹配不后跟任何字符但允许空格后有字符的数字?_Javascript_Regex - Fatal编程技术网

Javascript 正则表达式:如何匹配不后跟任何字符但允许空格后有字符的数字?

Javascript 正则表达式:如何匹配不后跟任何字符但允许空格后有字符的数字?,javascript,regex,Javascript,Regex,需要帮助使正则表达式与这些条件匹配(请原谅我可能混淆的措辞) 仅当以数字或点开头时匹配 匹配数字、点和中间的空白 匹配直到第一个空格(如果非数字跟随该空格) 如果只有数字跟在空格后面,那么匹配它 如果除点、空格或数字以外的任何字符跟在数字后面,则返回null 到目前为止,我已经得到了这个,但它仍然允许特殊字符跟随后面的数字 /^[0-9\.][0-9\.\s]+(?!\w)/ 样本结果 "1500" should return "1500" "1500 0" should return "15

需要帮助使正则表达式与这些条件匹配(请原谅我可能混淆的措辞)

  • 仅当以数字或点开头时匹配
  • 匹配数字、点和中间的空白
  • 匹配直到第一个空格(如果非数字跟随该空格) 如果只有数字跟在空格后面,那么匹配它 如果除点、空格或数字以外的任何字符跟在数字后面,则返回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\.]
    匹配数字或点的字符数
  • [0-9\.]+
    匹配任意数量的数字或点
  • (\s(?=\w)\d*)
    匹配空格,查找字母数字字符和0或更多数字
  • |$
    或字符串结尾(如果不匹配条件4)
  • JS示例:

    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.]
      -数字或点
    • [\d\s.]*
      -0或更多数字、空格、点,尽可能多
    • (?!\S)
      -后跟空格或字符串结尾
    JS演示:

    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)/