如何在Regex中允许空格

时间:2012-10-19 05:08:41

标签: javascript regex

我有一个正则表达式,只允许在文本框中输入整数和浮点数。 正则表达式代码: -

("^[0-9]*(?:[.][0-9]*|)$");

但是当用户在输入值的开头和结尾输入空格时,它会出错。我希望用户在开头和结尾都允许空格作为可选项,因此我更改了正则表达式,如下所示,但它不起作用。

注意:空格可以是空格或制表符。

测试用例:用户可能会输入:

"10","10.23"," 10","10 "," 10.23","10.23 "

允许任意数量的空格。

("^(?:\s)*[0-9]*(?:[.][0-9]*|)$")

我是正则表达式的新手,所以任何帮助都将受到高度赞赏。

谢谢。

2 个答案:

答案 0 :(得分:1)

试试这个:

/^\s*[0-9]*(?:[.][0-9]*|)\s*$/;

您不必将一个实体包装在一个组中以重复它,并且我在末尾添加了第二个零或多个空格,这是您缺少的,以使其工作。

注意:您尚未发布用于创建RegExp对象的代码,但如果它是new RegExp(string),请记住转义反斜杠(通过加倍):

var r = new RegExp("^\\s*[0-9]*(?:[.][0-9]*|)\\s*$");

另外,正如@Blender建议的那样,这可以简化为:

/^\s*[0-9]*(?:\.[0-9]*)?\s*$/;

或者,使用\d代替[0-9]

/^\s*\d*(?:\.\d*)?\s*$/;

答案 1 :(得分:0)

您不一定需要正则表达式:!isNaN(Number(textboxvalue.trim()))就足够了。

否则,请尝试/^\s{0,}\d+\.{0,1}\d+\s{0,}$/。测试:

var testvalues = ["10","10.23"," 10","10 "," 10.23","10.23 ","10.24.25"];
for (var i=0;i<testvalues.length;i+=1){
  console.log(/^\s{0,}\d+\.{0,1}\d+\s{0,}$/.test(testvalues[i]));
}
//=> 6 x true, 1 x false