【发布时间】:2012-01-31 20:31:01
【问题描述】:
我正在编写一个数据库备份功能,作为我学校项目的一部分。
我需要编写一个正则表达式规则,以便数据库备份名称只能包含合法字符。
“合法”是指不包含任何符号或空格的字符串。只有字母表和数字中的字母。
一个有效字符串的例子是'31Jan2012' 或'63927jkdfjsdbjk623' 或'hello123backup'。
到目前为止,这是我的 JS 代码:
// Check if the input box contains the charactes a-z, A-Z ,or 0-9 with a regular expression.
function checkIfContainsNumbersOrCharacters(elem, errorMessage){
var regexRule = new RegExp("^[\w]+$");
if(regexRule.test( $(elem).val() ) ){
return true;
}else{
alert(errorMessage);
return false;
}
}
//call the function
checkIfContainsNumbersOrCharacters("#backup-name", "Input can only contain the characters a-z or 0-9.");
虽然我以前从未真正使用过正则表达式,但是在快速搜索后我找到了this 工具,我从中编写了以下正则表达式规则:
^[\w]+$
^ = 字符串开头
[/w] = a-z/A-Z/0-9
'+' = 字符串后面的字符。
在运行我的函数时,我输入的任何字符串似乎都返回 false :( 我的代码错了吗?还是我没有正确使用正则表达式规则?
【问题讨论】:
-
我在我的 JS 控制台中尝试了
/^[\w]+$/.test("ads123"),它可以正常工作,也就是说,它应该返回true。 -
new Regexp("[regexp-goes-here]", "[modifiers]")和/[regexp-goes-here]/[modifiers]是等价的。请注意前者使用引号,后者不使用。 -
对
+稍微更正确的解释是“匹配前一个标记(即\w)1 次或多次”。但据我所见,代码应该可以工作。 -
您的所有回复都太好了,无法投票,所以我为你们所有人投票。非常感谢所有回答/评论这个问题的人,我学到了很多东西,现在问题已经解决了:)
标签: javascript regex validation