正则表达式匹配 '\' 斜杠并替换为 '\\'?
Regex match with '\' slash and replace with '\\'?
我正在将普通字符串转换为乳胶 format.So 我创建了乳胶代码匹配并将 \
单斜杠替换为 \
双 slash.why 我需要的它参考这个。我试过下面的代码:
function test(){
var tex="$$\left[ x=\left({{11}\over{2}}+{{\sqrt{3271}}\over{2\,3^{{{3}\over{2} $$";
var tex_form = tex.replace("/[\\/\\\.\\]/g", "\");
document.getElementById('demo').innerHTML=tex_form;//nothing get
}
test();
<p id="demo"></p>
未获得任何输出 data.But 此 link
中的匹配项
我希望需要将 \
替换为 \
why the i need it
正如您 link 所说的问题,\
字符在 JavaScript 字符串文字中具有特殊含义。它代表an escape sequence。
Not getting any output data.But the match in this link
转义序列在 JavaScript 编译器解析字符串文字时处理。
当您对它们应用正则表达式时,它们已经被消耗掉了。斜杠字符只存在于您的源代码中,不存在于您的数据中。
如果您想在字符串中加入斜杠字符,则需要在源代码中为其编写转义序列(\
)。之后您无法使用 JavaScript 重新添加它们。
不确定我是否理解问题,但请尝试以下代码:
var tex_form = tex.replace("/(\)/g","\\");.
您需要使用 '(' ')'
而不是 '['']'
来匹配输出。
存在这些问题:
字符串文字没有反斜杠;
正则表达式不是正则表达式;
预期正则表达式中的class不能匹配序列,只能匹配单个字符;
替换不会添加反斜杠,只会用它们替换。
在这里您可以找到关于每个点的详细信息:
1。如何在字符串文字中编码反斜杠
您的 tex
变量没有反斜杠。这是因为字符串文字中的反斜杠不被视为文字反斜杠,而是作为解释其后字符的转义符。
当你有 "$$\left..."
时,\l
表示 "literal l",因此你的变量内容将是:
$$left...
由于l
不需要转义,反斜杠是完全不需要的,这两个赋值结果相同字符串值:
var tex="$$\left[ x=\left({{11}\over{2}}+{{\sqrt{3271}}\over{2\,3^{{{3}\over{2} $$";
var tex="$$left[ x=left({{11}over{2}}+{{sqrt{3271}}over{2,3^{{{3}over{2} $$";
为了把重点带回家,这将也代表相同的值:
var tex="$$\l\e\f\t\[\ \x\=\l\e\f\t\(\{\{\}\o\v\e\r\{\}\}\+\{\{\s\q\r\t\{\}\}\o\v\e\r\{\,\^\{\{\{\}\o\v\e\r\{\}\ $$";
如果你真的想在你的内容中使用文字反斜杠(我知道你这样做,因为这是关于 LaTeX 的),那么你需要转义每个反斜杠......用反斜杠:
var tex="$$\left[ x=\left({{11}\over{2}}+{{\sqrt{3271}}\over{2\,3^{{{3}\over{2} $$";
现在您的 tex
变量的内容将是这个字符串:
$$\left[ x=\left({{11}\over{2}}+{{\sqrt{3271}}\over{2\,3^{{{3}\over{2} $$
2。如何编写正则表达式文字
您正在将 字符串 文字传递给 replace
的第一个参数,而您实际上打算传递正则表达式文字。您应该省略引号才能做到这一点。 /
是正则表达式文字的分隔符,而不是引号:
/[\\/\\\.\\]/g
这应该不用引号引起来。 JavaScript 将 /
分隔符理解为表示正则表达式文字,包括末尾的可选修饰符(如此处的 g
)。
3。 类 是单个字符的集合
此正则表达式包含不需要的字符。 class [...]
应列出您要匹配的所有 个 字符。目前你有这些字符(解析转义后):
\
/
\
\
.
\
\
将反斜杠表示 5 次太过分了。此外,在 JavaScript 中,正斜杠和点出现在 class 中时不需要转义。所以上面的正则表达式等价于这个:
/[\/.]/g
这可能是您想要匹配的,也可能不是。要匹配多个字符序列,您可以使用 |
运算符。这只是一个例子:
/\\|\\/|\\./g
...但我认为您不需要这个。
4。如何实际使用反斜杠作为前缀
我觉得您想用反斜杠替换点或正斜杠似乎很奇怪。可能您想 prefix 那些带有反斜杠的。在这种情况下,制作一个捕获组(带括号)并在 replace
:
中用 </code> 引用它
<pre><code>tex.replace(/([\/.])/g, "\");
再次注意,在替换字符串中只有一个文字反斜杠,因为第一个反斜杠是转义符(参见上面的第 1 点)。
我正在将普通字符串转换为乳胶 format.So 我创建了乳胶代码匹配并将 \
单斜杠替换为 \
双 slash.why 我需要的它参考这个
function test(){
var tex="$$\left[ x=\left({{11}\over{2}}+{{\sqrt{3271}}\over{2\,3^{{{3}\over{2} $$";
var tex_form = tex.replace("/[\\/\\\.\\]/g", "\");
document.getElementById('demo').innerHTML=tex_form;//nothing get
}
test();
<p id="demo"></p>
未获得任何输出 data.But 此 link
中的匹配项我希望需要将 \
替换为 \
why the i need it
正如您 link 所说的问题,\
字符在 JavaScript 字符串文字中具有特殊含义。它代表an escape sequence。
Not getting any output data.But the match in this link
转义序列在 JavaScript 编译器解析字符串文字时处理。
当您对它们应用正则表达式时,它们已经被消耗掉了。斜杠字符只存在于您的源代码中,不存在于您的数据中。
如果您想在字符串中加入斜杠字符,则需要在源代码中为其编写转义序列(\
)。之后您无法使用 JavaScript 重新添加它们。
不确定我是否理解问题,但请尝试以下代码:
var tex_form = tex.replace("/(\)/g","\\");.
您需要使用 '(' ')'
而不是 '['']'
来匹配输出。
存在这些问题:
字符串文字没有反斜杠;
正则表达式不是正则表达式;
预期正则表达式中的class不能匹配序列,只能匹配单个字符;
替换不会添加反斜杠,只会用它们替换。
在这里您可以找到关于每个点的详细信息:
1。如何在字符串文字中编码反斜杠
您的 tex
变量没有反斜杠。这是因为字符串文字中的反斜杠不被视为文字反斜杠,而是作为解释其后字符的转义符。
当你有 "$$\left..."
时,\l
表示 "literal l",因此你的变量内容将是:
$$left...
由于l
不需要转义,反斜杠是完全不需要的,这两个赋值结果相同字符串值:
var tex="$$\left[ x=\left({{11}\over{2}}+{{\sqrt{3271}}\over{2\,3^{{{3}\over{2} $$";
var tex="$$left[ x=left({{11}over{2}}+{{sqrt{3271}}over{2,3^{{{3}over{2} $$";
为了把重点带回家,这将也代表相同的值:
var tex="$$\l\e\f\t\[\ \x\=\l\e\f\t\(\{\{\}\o\v\e\r\{\}\}\+\{\{\s\q\r\t\{\}\}\o\v\e\r\{\,\^\{\{\{\}\o\v\e\r\{\}\ $$";
如果你真的想在你的内容中使用文字反斜杠(我知道你这样做,因为这是关于 LaTeX 的),那么你需要转义每个反斜杠......用反斜杠:
var tex="$$\left[ x=\left({{11}\over{2}}+{{\sqrt{3271}}\over{2\,3^{{{3}\over{2} $$";
现在您的 tex
变量的内容将是这个字符串:
$$\left[ x=\left({{11}\over{2}}+{{\sqrt{3271}}\over{2\,3^{{{3}\over{2} $$
2。如何编写正则表达式文字
您正在将 字符串 文字传递给 replace
的第一个参数,而您实际上打算传递正则表达式文字。您应该省略引号才能做到这一点。 /
是正则表达式文字的分隔符,而不是引号:
/[\\/\\\.\\]/g
这应该不用引号引起来。 JavaScript 将 /
分隔符理解为表示正则表达式文字,包括末尾的可选修饰符(如此处的 g
)。
3。 类 是单个字符的集合
此正则表达式包含不需要的字符。 class [...]
应列出您要匹配的所有 个 字符。目前你有这些字符(解析转义后):
\
/
\
\
.
\
\
将反斜杠表示 5 次太过分了。此外,在 JavaScript 中,正斜杠和点出现在 class 中时不需要转义。所以上面的正则表达式等价于这个:
/[\/.]/g
这可能是您想要匹配的,也可能不是。要匹配多个字符序列,您可以使用 |
运算符。这只是一个例子:
/\\|\\/|\\./g
...但我认为您不需要这个。
4。如何实际使用反斜杠作为前缀
我觉得您想用反斜杠替换点或正斜杠似乎很奇怪。可能您想 prefix 那些带有反斜杠的。在这种情况下,制作一个捕获组(带括号)并在 replace
:
</code> 引用它
<pre><code>tex.replace(/([\/.])/g, "\");
再次注意,在替换字符串中只有一个文字反斜杠,因为第一个反斜杠是转义符(参见上面的第 1 点)。