我正在编写一个数据库备份函数作为我学校项目的一部分。
我需要编写一个正则表达式规则,以便数据库备份名称只能包含合法字符。
“合法”是指不包含任何符号或空格的字符串。只有字母和数字中的字母。
有效字符串的示例是 '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 :( 是我的代码有误吗?还是我没有正确使用正则表达式规则?
请您参考如下方法:
这里的问题是,当在字符串中写入 \w 时,您对 w 进行了转义,生成的正则表达式如下所示:^[ w]+$,包含 w 作为文字字符。使用传递给 RegExp 构造函数的字符串参数创建正则表达式时,您需要转义反斜杠,如下所示:new RegExp("^[\\w]+$"),这将创建您想要的正则表达式。
有一种方法可以避免这种情况,使用 JavaScript 提供的速记符号:var regex =/^[\w]+$/; 不需要任何额外的转义。


