Javascript:转义 RegExp 字符串中的字符问题
Javascript: Escaping character issue in a string for RegExp?
我在字符串中放置正则表达式模式时遇到了一个小问题,我有 2 种模式,它们都非常相同。我认为由于 ''d 而第一个不起作用 - 它是否被视为转义字符?
var pattern = '^.{1,5}-'d{1,5}$'; // Doesn't work
var pattern = '^[a-zA-Z]{1,5}-[0-9]{1,5}$'; // Works
除了用 [0-9] 替换 ''d 之外,还有
什么吗?这是我正在使用的额外代码
var regex = new RegExp(pattern);
var result = regex.test(value);
提前致谢
如文档中所述,您有几种不同的方法来创建正则表达式
正则表达式文字,
var regex = /^.{1,5}-'d{1,5}$/;
正则表达式对象的构造函数
var regex = new RegExp("^.{1,5}-''d{1,5}$");
由于它是一个字符串,你需要转义任何 ''
与 ''w 和其他反斜杠字符相同
第二个版本主要用于需要添加到正则表达式中的变量
如果您希望编写正则表达式的方式工作,您可以双重转义d
:
var pattern = '^.{1,5}-''d{1,5}$'; // Should work
var regex = new RegExp(pattern);
否则,您可以使用分隔符直接使用正则表达式/
:
var pattern = /^.{1,5}-'d{1,5}$/;
首先,您将模式存储在字符串中,传递给变量的实际字符是:^.{1,5}-'d{1,5}$
因为'd
在字符串中没有意义,但''d
是反斜杠和文字d
。您可以尝试在字符串中放置反斜杠:
console.log('''); // Won't run
console.log(' ' '); // Returns a space
console.log(''n'); // Returns a newline character
因此,如果您的意思是字面上的反斜杠,则必须对其进行转义。
用:
var pattern = '^.{1,5}-''d{1,5}$'; // Should work
var regex = new RegExp(pattern);
不过,如果您多次使用正则表达式,应该会更快,因为在这里,您正在编译正则表达式,以便您可以多次使用它。
另一种方式将需要在每次调用正则表达式时编译正则表达式。
相关文章:
- 链接问题:下一个字符包含在<a>TinyMce ui TinyMce中的标签
- 替换
元素中的特殊字符的问题
- Javascript中的正则表达式问题转义特殊字符
- 使用javascript从字符串中删除额外或特殊字符时遇到问题
- JavaScript正则表达式代码匹配字符和数字的问题
- 自动缩放问题:它使用字符's计数
- Regex允许某些特殊字符-转义问题
- 超级简单的节点应用程序,ä的问题ö等等字符
- 显示从AJAX调用中提取的特殊字符时出现问题
- 重制版字符文本区域问题
- 角度过滤器问题,特殊字符失败
- 如何在文本框点击事件中设置文本框中字符的第一个位置---Chrome问题
- 为什么此字符编码问题仅在选定系统上出现
- Javascript(不适用于Web)需要替换所有有问题的字符
- JavaScript WebSocket 字符编码问题(文本)
- Javascript:转义 RegExp 字符串中的字符问题
- javascript正则表达式中的连字符问题
- jQuery HTML追加导致UTF-8国家语言字符问题
- Javascript在索引处替换字符问题
- 引导3.1 CSS连字符问题