在javascript中使用搜索并替换为正则表达式
我在notepad++中使用了一个正则表达式,用于搜索和替换操作一些文本,我希望将其合并到javascript代码中。这是正则表达式: 搜寻在javascript中使用搜索并替换为正则表达式,javascript,regex,Javascript,Regex,我在notepad++中使用了一个正则表达式,用于搜索和替换操作一些文本,我希望将其合并到javascript代码中。这是正则表达式: 搜寻 (?-s)(.{150250}\(\[\d+\])*)\h+并替换为\1\r\n\x20\x20\x20 本质上,每150-250个单词创建一个新段落并缩进 这是我在JavaScript中尝试过的。用于HTML中的文本区域。我有以下JavaScript: function rep1() { var re1 = new RegExp('(?-s)(.
(?-s)(.{150250}\(\[\d+\])*)\h+
并替换为\1\r\n\x20\x20\x20
本质上,每150-250个单词创建一个新段落并缩进
这是我在JavaScript中尝试过的。用于HTML中的文本区域
。我有以下JavaScript:
function rep1() {
var re1 = new RegExp('(?-s)(.{150,250}\.(\[\d+\])*)\h+');
var re2 = new RegExp('\1\r\n\x20\x20\x20');
var s = document.getElementById("textarea1").value;
s = string.replace(re1, re2);
document.getElementById("textarea1").value = s;
}
我还尝试将正则表达式直接作为string.replace()
的参数放置,但这也不起作用。你知道我做错了什么吗?有几个问题:
- JavaScript不支持
。您需要单独添加修改器。但是,这是JavaScript中的默认设置,因此您可以不使用它。如果您打算让(?-s)
也匹配换行符,那么在JavaScript正则表达式中使用
而不是[^]
- JavaScript不支持水平空白。相反,您可以使用
[^\S\r\n]
- 将字符串文字传递给
时,请注意反斜杠是字符串文字符号的转义字符,因此它们不会在regex中结束。所以要么将它们加倍,要么使用JavaScript的正则表达式文字符号new RegExp
- 在JavaScript中,除非为正则表达式提供了
修饰符,否则g
将只替换第一个匹配项replace
- 替换(替换的第二个参数
)不应是正则表达式。它应该是一个字符串,所以不要对其应用replace
newregexp
- 替换字符串中的反向引用应为
格式。JavaScript不支持那里的$1
\1
- 您可以在真正想要引用
的位置引用s
string
function rep1() {
var re1 = /(.{150,250}\.(\[\d+\])*)[^\S\r\n]+/g;
var re2 = '$1\r\n\x20\x20\x20';
var s = document.getElementById("textarea1").value;
s = s.replace(re1, re2);
document.getElementById("textarea1").value = s;
}
(?-s)
在JS引擎中无效。您的函数在哪里执行?回答得太好了,我自己写这篇文章可能要花很多时间,所以非常感谢您花时间来写,非常感谢@FloranThovan这里有一个错误:(?-s)
关闭单线模式,您只需在JS正则表达式中删除它并继续使用
。仅当需要匹配任何符号(包括换行符)时才使用[^]
。另外,\h
在JS中是[^\S\r\n]
(或[^\S\r\n\f\v]
)啊,你说得对,@WiktorStribiżew。相应更新!