我有这个字符串:
"Test abc test test abc test test test abc test test abc"
Run Code Online (Sandbox Code Playgroud)
干
str = str.replace('abc', '');
Run Code Online (Sandbox Code Playgroud)
似乎只删除abc上面字符串中的第一次出现.如何更换所有出现的内容?
我正在尝试根据用户输入构建一个javascript正则表达式:
function FindString(input) {
var reg = new RegExp('' + input + '');
// [snip] perform search
}
但是当用户输入包含一个?或*因为它们被解释为正则表达式特殊时,正则表达式将无法正常工作.实际上,如果用户将不平衡(或[字符串放入其中,则正则表达式甚至无效.
什么是正确转义所有特殊字符以在正则表达式中使用的javascript函数?
我只想用任何可能的字符串创建一个正则表达式.
var usersString = "Hello?!*`~World()[]";
var expression = new RegExp(RegExp.escape(usersString))
var matches = "Hello".match(expression);
Run Code Online (Sandbox Code Playgroud)
有内置的方法吗?如果没有,人们会用什么?Ruby有RegExp.escape.我觉得我不需要自己编写,那里必须有标准的东西.谢谢!
我正在写一个Chrome扩展程序,包括做了很多消毒的字符串:下面的工作可能通过转换包含HTML标签,<,>并&到<,>并&分别.
(换句话说,和PHP一样htmlspecialchars(str, ENT_NOQUOTES)- 我认为没有必要转换双引号字符.)
这是迄今为止我发现的最快的功能:
function safe_tags(str) {
return str.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>') ;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我必须一次性运行几千个字符串时,仍然存在很大的滞后.
任何人都可以改进吗?它主要用于10到150个字符之间的字符串,如果这有所不同的话.
(我有一个想法是不打扰编码大于号 - 这会有任何真正的危险吗?)
在下面的代码片段中,匹配结果中应忽略非捕获组"(?:aaa)",因此结果应该"_bbb"只是.
但是,我得到"aaa_bbb"了匹配的结果; 只有当我指定组(2)时才会显示"_bbb".
>>> import re
>>> s = "aaa_bbb"
>>> print(re.match(r"(?:aaa)(_bbb)", s).group())
aaa_bbb
Run Code Online (Sandbox Code Playgroud) x = "abcdefg"
x = x.match(/ab(?:cd)ef/)
Run Code Online (Sandbox Code Playgroud)
不应该是什么?它不是,它实际上是abcdef
为什么我的?:没有任何影响?(当然我的理解很可能是错的)