JavaScript正则表达式无法匹配给定的字符串
javascript regex is failing to match a given string
此 Meteor 代码无法将正则表达式与字符串匹配并在 if 条件语句中生成 true。我做错了什么?如何解决?谢谢
console.log(doc.valid);
console.log(doc.value);
var patt = new RegExp(doc.valid);
console.log(patt);
if (patt.test(doc.value)) {
console.log("match");
} else {
console.log("no match");
}
//meteor terminal
I20160313-08:06:53.143(11)? /[0-9a-zA-Z]{1,6}/g
I20160313-08:06:53.144(11)? ok
I20160313-08:06:53.144(11)? //[0-9a-zA-Z]{1,6}/g/
I20160313-08:06:53.145(11)? no match
编辑应用了注释中建议的修复程序,但正则表达式匹配了一个不应该匹配的字符串。
var patt = new RegExp(doc.valid);
console.log('applying '+ patt+ ' to '+ doc.value);
if (patt.test(doc.value, "g")) {
console.log(doc.value + " match");
} else {
console.log(doc.value + "no match");
}
I20160313-08:48:26.717(11)? applying /[0-9a-zA-Z]{1,6}/ to Kingkong
I20160313-08:48:26.717(11)? Kingkong match <..8 char.not suppose to match
如果您希望正则表达式表示"严格匹配具有 1 到 6 个字母(但不能更多)的字母数字字符串",那么它应该是:
/^[0-9a-zA-Z]{1,6}$/
原文:
/[0-9a-zA-Z]{1,6}/
表示"匹配包含 1 到 6 个字母的子字符串的字母数字字符串"。测试字符串"Kingkong"
明显匹配该规则。
我认为您的问题在于您尝试实例化 RegExp 对象的方式。正则表达式对象接受字符串而不是正则表达式作为第一个参数。尝试 new RegExp("[0-9a-zA-Z]{1,6}","g")
相关文章:
- 正则表达式在字符串中找到base64
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 从字符串中提取年份的Javascript正则表达式
- Javascript 如何强制 string.replace 不将我的字符串解释为正则表达式
- 如何将正则表达式包含到字符串数组中
- 使用正则表达式匹配长度为六个字符的字母数字字符串
- 使用正则表达式反转字符串中的元音
- 如何分割由JavaScript中使用正则表达式的多个部分组成的字符串
- 在字符串列表中搜索任何出现的单词,如果单词的第一个字符匹配,则高亮匹配单词.Javascript正则表达式
- 删除两个字符串正则表达式之间的所有内容
- Javascript,字符串正则表达式匹配
- 字符串正则表达式模式.replace(/{0}/, “$0.00”) 不起作用
- Javascript:字符串正则表达式
- 如何在JavaScript中子字符串正则表达式
- 匹配大写或小写字符串正则表达式
- 逗号和空格分隔的数字和连字符分隔的字符串正则表达式
- 解析CGI查询字符串正则表达式
- 分析已知键的字符串正则表达式,但保留分隔符
- 在一组字符串中重新排列一个字符串 - 正则表达式
- 从字符串正则表达式中提取多个值