【发布时间】:2015-08-12 04:02:24
【问题描述】:
正在创建一个测试此模式的 javascript 正则表达式:a, b, c, etc.. 带有某些字母。
换句话说,用逗号分隔的字母在逗号后加一个空格。至少需要一个字母才能通过测试,但之后可以有无限多的字母。
到目前为止我有这个:
/[cdefgab]+(, [cdefgab]+)*/
但我无法按照描述的方式运行它。
【问题讨论】:
标签: javascript regex
正在创建一个测试此模式的 javascript 正则表达式:a, b, c, etc.. 带有某些字母。
换句话说,用逗号分隔的字母在逗号后加一个空格。至少需要一个字母才能通过测试,但之后可以有无限多的字母。
到目前为止我有这个:
/[cdefgab]+(, [cdefgab]+)*/
但我无法按照描述的方式运行它。
【问题讨论】:
标签: javascript regex
如果您需要用逗号和空格分隔的字母序列,您应该使用这个正则表达式:
/[cdefgab](, [cdefgab])*/
在您的正则表达式中,如果只有一个字母,则不需要 + 量词。
这是a DEMO。
编辑:
如果它的目的是匹配一个字母或一个用逗号分隔的字母序列,因此您需要使用 {1} 来精确匹配一次,那么您的正则表达式应该是这样的:
/[cdefgab]{1}(, [cdefgab])*/
EDIT2:
要完全匹配所需的字符序列并相应地启用/禁用提交按钮,您应该将此正则表达式 /^[cdefgab]{1}(, [cdefgab])*$/) 与输入的 keyup 事件一起使用,这是一个 DEMO:
var validateInput = function validateInput(input) {
var submitButton = document.getElementById("submitButton");
if (input.value.match(/^[cdefgab]{1}(, [cdefgab])*$/)) {
console.log("matches");
submitButton.disabled = false;
} else {
console.log("Unmatches");
submitButton.disabled = "disabled";
}
}
Text:
<input type="text" id="txt" onkeyup="validateInput(this);" />
<input type="submit" id="submitButton" disabled/>
【讨论】:
/[a-z](, [a-z])*/
这需要至少一个字母,然后可以有任意数量的字母(0 个或多个),前面有一个逗号和一个空格。
编辑:如果您只查找特定字母,请将 [a-z] 的实例替换为您要查找的字母,并用方括号括起来。即[cefg]
【讨论】:
[a-z]) 的开头在技术上将“传递”任何包含字母的字符串。