【问题标题】:Regex that accepts: letters, numbers, and some secondary characters with a range of lengths接受:字母、数字和一些具有一定长度范围的辅助字符的正则表达式
【发布时间】:2014-11-27 15:55:25
【问题描述】:

这是我的正则表达式测试函数:

function RegexText(val) { 
    var MyRegex = /^([a-z0-9 _àèìòù-]+)$/i;
    var result = MyRegex.exec(val);
    return result !== null && result[0] === val;
}

这个正则表达式接受:

  • 信件(AbcABC 感谢/i
  • 数字
  • 一些次要字符:àèìòù-_space

我还想插入一个范围长度(最少 1 个字符,最多 20 个字符)。我尝试插入{1,20},但没有成功。

【问题讨论】:

  • 将 {} 放在字符类之后
  • 只需使用文本框的 maxlength 属性即可。这样他们就不可能输入超过 20 个字符。
  • 你在哪个字符串上测试这个?您有 ^$ 锚点,只有在被搜索字符串的开头和结尾处才允许匹配。

标签: javascript regex


【解决方案1】:

您需要将重复量词{} 放在字符类旁边。

var MyRegex = /^[a-z0-9 _àèìòù-]{1,20}$/i;

在开始时使用前瞻。

var MyRegex = /^(?=.{1,20}$)[a-z0-9 _àèìòù-]+$/i;

^(?=.{1,20}$) 只允许字符长度范围为 1 到 20 的字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多