我需要一个正则表达式来验证,
我有一个这样的模式,'/^(xyz34 | xyz12)((?=.[a-zA-Z])(?=.[0-9]){13}/g'
但这允许空格和特殊字符,如($、%等),这违反了规则#3。
有没有建议排除这个空格和特殊字符,并严格检查它必须是字母和数字?
/^(xyz34|xyz12)[a-zA-Z0-9]{13}$/
这应该行得通,
<代码>* 将匹配任何字符串,您可以根据需要使用以下代码:
/^xyz(34|12)[a-zA-Z0-9]{13}$/g
正则表达式小提琴
你不应该量化周围环境。它们是非消费模式,即连续的正lookaheads检查其模式的存在,但不推进正则表达式索引,而是在同一位置检查文本。重复13次没有任何意义^(xyz34 | xyz12)((?=.[a-zA-Z])(?=.[0-9]){13}
等于^(xyz34 | xyz12)(?=.[a-zA-Z])(?=.[0-9])
,意味着字符串可以以xyz34或xyz12开头,然后应该至少有1个字母和至少1个数字。
您可以考虑使用如下消费模式来解决问题:
请参阅正则表达式演示#1和正则表达式演示#2。
注意:这些是正则表达式文字,不要在单引号或双引号内使用!
细节
^
-字符串的开始xyz
-一个通用前缀(?: 34|12)
-匹配34
或12
(?=[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}或其他内容替换’+’可能会很好。当出现未编码的“&”时,这将限制替换整个句子的机会。