当前位置: 首页 > 知识库问答 >
问题:

Javascript:Regex以排除空白和特殊字符

王云
2023-03-14

我需要一个正则表达式来验证,

  1. 长度应该是18
  2. 前5个字符应该是(xyz34|xyz12)
  3. 其余13个字符只能是字母和数字,不允许有空格或特殊字符。

我有一个这样的模式,'/^(xyz34 | xyz12)((?=.[a-zA-Z])(?=.[0-9]){13}/g'

但这允许空格和特殊字符,如($、%等),这违反了规则#3。

有没有建议排除这个空格和特殊字符,并严格检查它必须是字母和数字?

共有3个答案

陈斌蔚
2023-03-14
/^(xyz34|xyz12)[a-zA-Z0-9]{13}$/

这应该行得通,

  • ^在行首断言位置
  • 第一捕获组(xyz34 | xyz12)
    • 第一个备选方案xyz34从字面上匹配字符xyz34(区分大小写)
    • 第二个备选方案xyz12从字面上匹配字符xyz12(区分大小写)

周志文
2023-03-14

<代码>* 将匹配任何字符串,您可以根据需要使用以下代码:

/^xyz(34|12)[a-zA-Z0-9]{13}$/g

正则表达式小提琴

施飞鸿
2023-03-14

你不应该量化周围环境。它们是非消费模式,即连续的正lookaheads检查其模式的存在,但不推进正则表达式索引,而是在同一位置检查文本。重复13次没有任何意义^(xyz34 | xyz12)((?=.[a-zA-Z])(?=.[0-9]){13}等于^(xyz34 | xyz12)(?=.[a-zA-Z])(?=.[0-9]),意味着字符串可以以xyz34或xyz12开头,然后应该至少有1个字母和至少1个数字。

您可以考虑使用如下消费模式来解决问题:

  • 如果您不在乎最后13个字符是否只包含数字或字母,请使用其他用户建议的模式,如/^(?:xyz34 | xyz12)[a-zA-Z\d]{13}$/或/^ xyz(?:34 | 12)[a-zA-Z0-9]{13}$/

请参阅正则表达式演示#1和正则表达式演示#2。

注意:这些是正则表达式文字,不要在单引号或双引号内使用!

细节

  • ^-字符串的开始
  • xyz-一个通用前缀
  • (?: 34|12)-匹配3412
  • 的非捕获组
  • (?=[a-zA-Z]*\d)-当前位置右侧任何0个字母后必须至少有1位数字
  • (?=\d*[a-zA-Z])-当前位置右侧任何0位数字后必须至少有1个字母
  • [a-zA-Z\d]{13}-13个字母或数字
  • $-字符串结束。

JS演示:

var strs = ['xyz34abcdefghijkl1','xyz341bcdefghijklm','xyz34abcdefghijklm','xyz341234567890123','xyz14a234567890123'];
var rx = /^xyz(?:34|12)(?=[a-zA-Z]*\d)(?=\d*[a-zA-Z])[a-zA-Z\d]{13}$/;
for (var s of strs) {
  console.log(s, "=>", rx.test(s));
}
 类似资料:
  • 问题内容: 我正在寻找符合以下规则的正则表达式。 允许的字符 字母:az / AZ 数字:0-9 特殊字符:〜@#$ ^&*()-_ + = [] {} | \,。?:( 应允许使用空格) 不允许 特殊字符:<>’“ /;`% 问题答案: 对于允许的字符,您可以使用 验证应仅由允许的字符组成的完整字符串。请注意,在结尾处(否则将是一个范围),并且转义了几个字符。 对于无效字符,您可以使用 检查他们

  • 我希望能够翻译和XML项目,以删除空格&任何特殊字符和转换大写字母到小写字符,我得到了一点卡住,至少说!

  • 问题内容: 我很难提出一个正则表达式,该正则表达式实际上会将某些特殊字符列入黑名单。 我需要使用它来验证输入字段中的数据(在Java Web应用程序中)。我们希望允许用户输入任何数字,字母(我们需要包括带重音的字符,例如法语或德语)和一些特殊字符,例如’-。等等 如何将诸如<>%$等的字符列入黑名单? 问题答案: 我只是将角色列入白名单。 使用正则表达式构建黑名单同样简单,但是你可能需要添加更多字

  • 问题内容: 我需要从字符串中删除所有特殊字符,标点符号和空格,以便只有字母和数字。 问题答案: 这可以不用正则表达式来完成: 您可以使用: 如果您坚持使用正则表达式,则其他解决方案也可以。但是请注意,如果可以在不使用正则表达式的情况下完成此操作,那么这是最好的解决方法。

  • 问题内容: 我想使用JavaScript从字符串中删除除空格以外的所有特殊字符。 例如, 应输出为 。 问题答案: 您应该使用带有单个正则表达式的字符串替换功能。假设使用特殊字符,您的意思不是字母,这是一种解决方案:

  • 问题内容: 我正在为我的应用程序创建一个RSS feed文件,在其中我想删除HTML标签,该操作由完成。但是不删除HTML特殊代码字符: 等等 请告诉我任何可用于从字符串中删除这些特殊代码字符的函数。 问题答案: 使用解码或使用删除它们: 编辑:根据雅科的评论的替代 用{2,8}或其他内容替换’+’可能会很好。当出现未编码的“&”时,这将限制替换整个句子的机会。