【发布时间】:2018-10-25 02:39:22
【问题描述】:
在 RegEx 方面没有太多经验。
我在 java 脚本中有以下内容,效果很好。
使用以下模式只允许字母数字
var valid = /^[A-Za-z0-9]+$/.test("a"); // returns true
var valid = /^[A-Za-z0-9]+$/.test("@"); // returns false
我在代码的其他一些地方使用了模式部分“^[A-Za-z0-9]”,并被要求在变量中使用“^[A-Za-z0-9]”部分并使用它,使其不重复。以下是对上面的修改:
var regExPart= "^[A-Za-z0-9]";
var regExString = ("/" + regExPart+ "+$/".replace(/\"/g, "")); // replacing the quotes
var regExp = new RegExp(regExString); // results in /^[A-Za-z0-9]+$/
var valid = regExp.test(charValue); // charValue could be any keyvalue "a" or "@"
//the above returns false for "a"
//the above returns false for "@"
我在按键事件中写这个,只允许字母数字
keypressValidation: function (e) {
var charCode = (e.which) ? e.which: event.keyCode;
var charValue = String.fromCharCode(charCode);
var valid = return /^[A-Za-z0-9]+$/.test(charValue);
if (!valid)
{
//prevent default (don't allow/ enter the value)
}
不知道为什么。我在这缺少什么。对于这两种方法,需要为“a”返回 true,为“@”返回 false。任何帮助/建议都会有很大帮助。提前致谢。
【问题讨论】:
-
我通常喜欢 DRY-ness,但 IMO 除非重复的模式是 long,否则不要尝试跨 多个单独的正则表达式。 (另请注意,您的字符集使用
i标志简化为[a-z\d]) -
能否提供
charValue的内容是什么? -
另外,您只需要检查您的角色是否为
a吗?为什么在这种情况下使用正则表达式? -
@Nicolas 我将其编写为 java 脚本中按键验证的一部分,现在允许用户仅输入字母数字值。更新了我的帖子。
-
只需使用
RegExp构造函数correctly
标签: javascript regex