javascript - Javascript常规Eypression不起作用
问题描述
我写了一个正则表达式:
var mobileNumberRegex = new RegExp("((01)\d\d\d?)|(([+]491)\d\d\d?)|((00?49)\d\d\d\d?)");
我用这段代码测试它:
mobileNumberInput.addEventListener('keyup', function(e) {
console.log(mobileNumberRegex.test(e.target.value));
if(mobileNumberRegex.test(e.target.value)) {
console.log('Hurrraaa');
} else {
console.log('Ohjeee');
}
});
但是每个输入都返回错误。(例如:0177、+49177、049163)
当我在在线测试工具上尝试此输入时,它正在工作:
解决方案
您的请求表达式位于字符串文字内,因此在将字符串文字解析为字符串时会使用转义序列。
传递给RexExp
构造函数的结果是d
字符而不是\d
数字序列。
改用正则表达式文字:
var mobileNumberRegex = /((01)\d\d\d?)|(([+]491)\d\d\d?)|((00?49)\d\d\d\d?))/;
推荐阅读
- ajax - 使用 foreach 将结果 ajax 传递给刀片
- database - 当 posrgresql 内存不足且未运行时如何从磁盘空间中删除表
- user-experience - UX 官方 Android Auto 平面图标
- python - 如何检查来自不同函数的两个变量是否相等?
- python - 为什么不调用 __del__ 方法?
- amazon-web-services - 如何为 dynamodb-local 配置 AWS 凭证?
- android-studio - 如何在我的应用程序中同步服务器时间。我不想使用设备当地时间
- c++ - 为什么继承链 D->B,C->A 中 A 成员的访问会导致歧义?
- flutter - 在小部件被移除之前应用动画
- python - 检查行值是否等于列名并访问列的值