Javascript 正则表达式的模式不起作用

标签 javascript regex

这应该很容易。我有以下代码:

var patt = new RegExp("\d{3}[\-]\d{1}");
var res = patt.test(myelink_account_val);
if(!res){
  alert("Inputs must begin with something like XXX-X of numbers and a dash!");
  return;
}

基本上,强制用户输入类似 101-4 的内容。代码借自Social Security Number input validation 。我可以确认我的输入确实像 101-4;只有前五个字符需要符合该模式。

但是运行我的代码总是会发出警报——条件永远不匹配。

一定很简单吗?!

谢谢。

最佳答案

当您使用“new RegExp”时,您将向其传递一个字符串。

这里有两个解决方案:

1) 不要使用“new RegExp()”,而是使用正则表达式模式:

var patt = /\d{3}[\-]\d{1}/

2)如果你想使用它,请记住你必须转义转义符:

var patt = new RegExp("\\d{3}[\\-]\\d{1}");

此外,请记住,如果“-”是 [] 上的唯一符号(或第一个或最后一个),则可以跳过转义:

var patt = new RegExp("\\d{3}[-]\\d{1}");

关于Javascript 正则表达式的模式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42276264/

相关文章:

javascript - 为什么我的 xml 请求不能正常工作?无法读取 null 对象?

javascript - 尝试使用 javascript/PHP 更新数据库不起作用

javascript - 使用 parsley.js 添加自定义 CSS 类

regex - 正则表达式vs包含Elasticsearch中的性能比较

c++ - 检查一个正则表达式是否覆盖另一个正则表达式

regex - 句子中的最后一个单词 : In SQL (regular expressions possible? )

javascript - 使用 jquery 文本框仅允许带点的十进制数字

javascript - 为什么我无法使用 GetElementById 查找页面上的元素?

javascript - 以编程方式删除 <script src ="/unwanted.js"../> 引用

regex - VSCode 内部正则表达式搜索,负向后视