如何存储包含反斜杠的字符串(无需手动双转义)
How can I store a string which contains backslashes (without manually double escaping)?
我需要将字符串中的反斜杠加倍,并发现Javascript有一个奇怪的限制:在不计算转义符的情况下输入字符串是不可能的。这种行为意味着我无法通过输入进行区分
"'!" == "!" // true
"'?" == "?" // true
"'d" == "d" // true
"'!'['d'd':'d'd':'d'd.*?']'(" == "![dd:dd:dd.*?](" // true
请注意,'d
和d
是正则表达式中具有不同含义的字符串(数字与字母d)。字符串求值导致它们被相同地存储,如'b
和b
。
"'![d'd 'bb" // == "![dd bb]" etc.
我想创建一个由字符串(根据需要将转义符加倍)和变量组成的new RegExp
,以便能够处理一系列文件,而无需每次手动更改正则表达式,也无需依赖一些较弱、更通用的正则表达式。
看起来我真的必须手动完成,尽管反斜杠就在那里可以替换。我很困惑,因为没有任何明显的方法可以为正则表达式做同样的事情
如果没有输入反斜杠的能力(据我所知),这似乎是不可能的——或者更确切地说,解决方案会很粗糙,而且不是程序化的。
有人知道我要找的函数吗?这似乎很基本,所以我希望我错过了一些显而易见的东西!
观察到'!'[
的长度返回2而不是4,这让我觉得这实际上可能是该语言的一些基本事实,但常识告诉我……这个页面是用Javascript处理的。果不其然,找出之前的代码块:
document.querySelector('... > code')[0].innerText
// "'!'["
document.querySelector('... > code')[0].innerText.length
返回4而不是2,所以肯定有办法输入这样的字符串吗?
相关问题如何以编程方式创建双转义?
所以,在多次阅读你的问题后,我想我明白了你的意思,这听起来肯定是一个XY问题。转义字符只是一个字符;转义是语法的一部分,而不是字符串本身。如果您是动态构建regex,则必须对特殊字符进行双转义。在任何情况下,这里有一种依靠函数字符串化来做你想做的事情的方法:
var regex = function(f) {
return RegExp(f.toString().match(/return's+?'(['s'S]+)'/).pop())
}
// instead of `RegExp('''d''b')`
regex(function(){return ''d'b'}) //=> /'d'b/
但同样,这是而不是要走的路;只需手动对字符进行双重转义。
你知道如果你想存储实际的反斜杠,你可以使用双转义,对吧?
"''ha!" // Will result in ''ha'
如果希望在字符串中有一个字面反斜杠,则需要输入两个反斜杠。第一个对第二个进行转义,表示应该将其解释为实际的反斜杠,而不是转义字符。
如果您想要一个内容为以下字符的字符串:
'
您将使用以下字符串文字:
"''"
- 使用Jinja2的JavaScript转义字符串
- 如何转义字符串中的html实体
- “转义字符串”在Regex中是什么意思?(Javascript)
- javascript中不带转义字符串的${variable}用法
- 将 FileReader.readAsBinaryString 转换为 Unicode 转义字符串
- 控制转义字符串
- json中javascript:hex的转义字符串
- 如何将ajax数据发送到rails 3.jQuery正在转义字符串
- 使用C#在BHO中注入javascript-如何正确地转义字符串
- 如何在剃刀中转义字符串
- 转义字符串化 JSON 中的单引号,作为 EJS 模板传递以供查看
- 转义字符串中的“+”加号,以便在 coffeescript/javascript 中的正则表达式中使用
- JS:转义字符串末尾带有反斜杠的字符串,用于与jQuery函数一起使用
- JavaScript 中的转义字符串
- 在将它们设置为文本区域的值之前,我必须转义字符串吗?
- 如何转义字符串以存储在 JSON 中
- 解码或转义字符串中的十六进制代码编号
- JavaScript转义字符串不会在C#正则表达式中得到取消转义.取消逃脱()
- 转义字符串
- 转义字符串 - Javascript中的输出轨字符串