2011-07-07 105 views
3

我希望有人可以帮助我一点验证,我将表单输入的值作为一个字符串。我需要根据一些规则来验证它,所以它可以成为表名。我可以单独做,但我不知道如何把它们放在一起。输入(tempName)需要:Javascript验证

  1. 已更换用下划线空间
  2. 没有特殊字符
  3. 少于25个字符

1.

newName = tempName.replace(' ', '_') 

2 。

var regex=/^[0-9A-Za-z]+$/; //^[a-zA-z]+$/ 

    if(regex.test(tempName)){ 
    tempName = newName 
    return true; 
    } 

    else { 
    alert("Only letters + numbers allowed - no special characters or spaces.") 
    return false; 
    } 

3.

if (tempName.length < 25) { 
    newName = tempName 
    } 

    else { 
    newName = tempName.substr(0,25);  
    } 

道歉问这么简单的东西,但我还没有真正用JavaScript正确工作了几年,我有嵌套的麻烦,如果报表和设置条件。

帮助将不胜感激。

谢谢。

回答

1

那么你可以放在一起的第2位。

newName = tempName.replace(" ", "_").replace(/\W/g, ""); 

但是然后我会检查替换后的剩余字符串的长度,以确保我没有得到索引超出范围。

if(newName.length > 25) { 
    newName = newName.substring(0, 25); 
} 
+0

为什么用一个空字符串替换一个有效字符串的实例,如果它错了,什么也不做?请纠正第一个。 – Ryan

+0

因为他没有要求做任何事情,如果输入不符合他要求准备成为表名的标准。 – kasdega

+0

他不像字符串操作那样有效。 – kasdega

5
if(/^\w{,25}$/.test(name = name.replace(/\s/g, '_'))) { 
    // It's valid. 
} 

可能是你想要的。

编辑:如果要截断为25个字符,它是:

if(/^\w+$/.test(name = name.replace(/\s/g, '_').substring(0, 25))) { 
    // It's valid. 
}
+0

这是否设置字符串的长度为<= 25?或者它只是检查,看看是否该字符串<= 25? – kasdega

+0

@kasdega:只是做检查。不过,我会添加一个不同的解决方案来解决问题。 – Ryan

+0

谢谢。我认为我正在学习关于正则表达式的新东西 – kasdega

1

听起来像只需要将大部分内容放在JavaScript功能块中。

function validateTableName(tempName) 
{ 
var newName=''; 
your code here... 
return newName; 
} 

HTH ...

+0

为什么要低估我的回应?我的回答很清晰,简洁。我会授予它不那么优雅,但它解决了这个问题。另外,@ minitech响应不能解决特殊字符问题。 – Taersious

+0

为了将来的参考,当我没有在这里发布时,我无法获得像这样的提示,我不这么认为。无论如何,downvote是因为这根本不是问题。把他的代码放在一起,它不起作用。是的,我的回应确实解决了特殊字符问题,仔细观察。 – Ryan