Javascript正则表达式再次测试没有特殊字符或空格的单个字符串

时间:2018-04-22 14:51:40

标签: javascript

我正在为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');
});

1 个答案:

答案 0 :(得分:1)

不确定所有括号是什么但改变了?到+应该够了

&#13;
&#13;
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');
});
&#13;
&#13;
&#13;