我正在为 document.createElement()
编写一个函数包装器,其中我可以传入元素标签名称,例如。 'div' 或传入要创建的完整 html 字符串。我有用于测试 html 标记开始和结束的正则表达式,即“<”或“>”,但现在我想进一步测试字符串中是否有特殊字符。
我有 /^([a-zA-Z]*)?$/g
来测试匹配,但它在空白字符串上失败。我以为 + 会捕捉到这一点,但似乎没有。假设我之前可以测试空字符串,但想知道是否有办法测试这一点。
var strings = ["div","<div>...</div>","div1","1div","div-","[div]","(div)","$div",""];
strings.forEach(function(str, i) {
/^([a-zA-Z]+)?$/.test(str)
? console.log(i, 'OK valid')
: console.log(i, 'XX invalid');
});
var re = new RegExp('^([a-zA-Z]+)?$','g');
strings.forEach(function(str, i) {
re.test(str)
? console.log(i, 'OK valid')
: console.log(i, 'XX invalid');
});
最佳答案
不确定所有括号的用途,但要更改?到 + 就足够了
var strings = ["div","<div>...</div>","div1","1div","div-","[div]","(div)","$div",""];
strings.forEach(function(str, i) {
/^[a-zA-Z]+$/.test(str)
? console.log(i, 'OK valid')
: console.log(i, 'XX invalid');
});
var re = new RegExp('^[a-zA-Z]+$','g');
strings.forEach(function(str, i) {
re.test(str)
? console.log(i, 'OK valid')
: console.log(i, 'XX invalid');
});
关于Javascript正则表达式再次测试没有特殊字符或空格的单个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49967247/