草庐IT

regexp-safe

全部标签

javascript - 通过 RegExp 构造函数创建的对象匹配 Javascript 正则表达式中的空格

请查看这段代码。为什么通过不同方式(通过/regex/文字和通过RegExp构造函数)创建相同的正则表达式会导致不同的结果?为什么第二个模式不匹配str中的空格?varstr="";varpat1=/\s/;document.writeln(pat1.test(str));//shows"true"varpat2=newRegExp("\s");document.writeln(pat2.test(str));//shows"false"无法在任何地方找到我的问题的答案。谢谢 最佳答案 您需要转义反斜杠,因为它在字符串中:varpa

javascript - RegExp : I want to remove unnecessary words in the Sentence. 我该怎么做?

我有一个句子,我想从中删除一些词。如果我有:"jQueryisaUniquelanguage"和一个名为garbageStrings的数组:vargarbageStrings=['of','the',"in","on","at","to","a","is"];我想去掉句子中的“is”和“a”。但是如果我使用这个:/Thisstatementisinsideaforloop.我正在循环整个句子并在garbageStrings/中找到匹配项varregexp=newRegExp(garbageStrings[i]);字符串将变成“jQueryUniquelnguge”请注意,语言中的“a”

javascript - 如何让外部代码 'safe' 运行?只是禁止 eval()?

我希望能够让社区成员提供他们自己的javascript代码供其他人使用,因为用户的想象力集体远远超过我所能想到的。但这引发了固有的安全问题,特别是当目的是允许外部代码运行时。那么,我可以禁止提交中的eval()并结束它吗?还是有其他方法可以评估代码或在javascript中引起大规模panic?还有其他一些事情是不允许的,但我主要担心的是,除非我可以阻止字符串被执行,否则我为特定方法设置的任何其他过滤器都可以被绕过。可行,还是必须求助于作者提供网络服务接口(interface)? 最佳答案 自HTML5现在可以使用了sandbox对

javascript - RegExp.test 不工作?

我试图在javascript中使用Regex.test验证年份,但无法弄清楚为什么它返回false。varregEx=newRegExp("^(19|20)[\d]{2,2}$");regEx.test(inputValue)对于输入值1981、2007返回false谢谢 最佳答案 当您使用字符串表达式创建RegExp对象时,您需要加倍反斜杠以便它们正确转义。另外[\d]{2,2}可以简化为\d\d:varregEx=newRegExp("^(19|20)\\d\\d$");或者更好的是使用正则表达式文字来避免双反斜杠:varreg

javascript - 一个 "safe place"来评估 Javascript 中的受信任代码(具有特定上下文)? [编辑: how can you break it?]

不要在标题上评判我,我知道eval是邪恶的,但我这样做是有原因的,而且会非常有限。事情是这样的:我想创建一个安全的空间,我可以在其中运行特定的(和受信任的)代码,并检索结果(如果它符合我的期望)。出于安全原因,我想将它从所有其他范围中删除(这个空间被要求提供结果,并且应该不能单独将任何内容导出到周围的范围)。我找到了一个似乎可行的解决方案,它也可以为执行添加上下文,但我不确定它是否有效,或者该系统中是否存在安全漏洞。你能告诉我它是否有问题吗?它实际上创建了与全局变量同名的本地变量,以防止访问它们。它还剥离了功能(我将添加功能以保留我想要保留的功能)。该函数声明为最接近全局变量,以避免更

javascript - require.context : inline RegExp works, var RegExp 不

如果声明了SPECEnv,我将尝试有条件地加载我的测试:varcontext=nullif(process.env.SPEC){context=require.context('./tests',true,/.*?SearchInput.*/);}context.keys().forEach(context);这是完美的工作。现在如果我这样做varcontext=nullif(process.env.SPEC){varc=/.*?SearchInput.*/;context=require.context('./tests',true,c);}context.keys().forEac

javascript - IE8 不处理希腊语中的 ignoreCase RegExps

如果我使用一些希腊月份名称并根据它们制作不区分大小写的正则表达式,它们将不会匹配大写的同一月份:varnames=['Μάρτιος','Μάιος','Ιούνιος','Ιούλιος','Αύγουστος','Νοέμβριος'];varpre=document.getElementsByTagName('pre')[0];vari;for(i=0;i在Ie8中,这会打印名称,然后打印false。在其他浏览器中,它打印为真。 最佳答案 只需使用.toUpperCase()而不是.toLocaleUpperCase()。后者

javascript - 使用 Javascript RegExp 用迭代数字替换每个匹配项

我想用一个迭代数字替换字符串中的空行例如替换字符串:"MyfirstlineMysecondlineMythirdline"与"1Myfirstline2Mysecondline3Mythirdline"我可以匹配和替换这些行使用varnewstring=TestVar.replace(/(^|\n\n)/g,"\nhello\n");但是,我正在努力添加一个函数来为每个函数添加一个迭代数。你能帮忙吗?TIA,Gids 最佳答案 是的,您可以在javascript中做到这一点。您只需将一个函数作为第二个参数传递给replace。va

JavaScript RegExp 匹配忽略 HTML 的文本

是否可以在“Thedogisreallyreallyfat!”中匹配“狗真的很胖”,并在其周围添加“WHATWASMATCHED”?我并不是特别指这个意思,但通常能够忽略HTML搜索文本,将其保留在最终结果中,并在其周围添加上面的span吗?编辑:考虑到HTML标签重叠问题,是否可以匹配一个短语并在每个匹配的单词周围添加跨度?这里的问题是,当“dog”不在搜索上下文中时,我不想匹配它,在这种情况下,“thedogreallyreallyfat”。 最佳答案 更新:这是一个工作fiddle,可以满足您的需求。但是,您需要更新htmlT

javascript - 为什么 (new RegExp ("\\w") ===/\w/) 在 JS 中是假的?

我在Chrome的控制台中尝试了以下操作:varr1=newRegExp("\\w");//→/\w/varr2=/\w/;//→/\w/r1===r2;//→falser1==r2;//→falser1.toString()===r2.toString();//→truer1.source===r2.source;//→true我不明白为什么会那样。 最佳答案 它们是两个不同的RegExp实例,因此通过直接将它们与==或===进行比较,您正在比较两个不相等的引用,导致false。但是当您比较它们的toString()序列化或它们的