2011-07-28 191 views
1

我正在使用这个自制函数来验证文本字段,但由于某种原因,它没有“接受”空格。我觉得奇怪,因为我在我的课有\ S ...Javascript正则表达式空间问题

function validateText(controlid, minlength, maxlength, required) { 
    var control = document.getElementById(controlid); 
    if (!required && control.value.length == 0) control.style.backgroundColor = "White"; 
    else { 
     var regex = new RegExp("^[a-zA-Z0-9\(\)\.\s_,:/-]{" + minlength + "," + maxlength + "}$", "g"); 
     if (!regex.test(control.value)) 
      control.style.backgroundColor = "#FFDDDD"; 
     else 
      control.style.backgroundColor = "White"; 
    } 
} 

你能告诉我为什么进入空间轮番文本框红?谢谢:)

+0

这种情况下最小长度和最大长度值是多少 –

+0

@Jesper - 我做了一个演示,并且工作正常。希望有所帮助〜[http://jsfiddle.net/5ryx8/](http://jsfiddle.net/5ryx8/) – Monday

回答

3

我相信这是因为你试图把\s在一个类。在课堂内部(例如,[])\s很简单,就是一个逃脱不了的“s”。要么使用文字空间,要么做^([...]|\s){

+0

是的,如果你用空格替换\ s,它就会起作用。你可以在jsFiddle中看到它的工作:http://jsfiddle.net/jfriend00/Ne6zC/。 – jfriend00

+0

谢谢你们。现在工作正常 – Jesper