草庐IT

REGEXP_SUBSTR

全部标签

javascript - 是否可以修改现有 RegExp 上的标志?

我的代码收到一个RegExp对象(不受我控制)。它不是全局性的,但我需要它。目前我正在这样做:if(!regex.global){varflags='g';if(regex.ignoreCase)flags+='i';if(regex.multiline)flags+='m';if(regex.sticky)flags+='y';regex=newRegExp(regex.source,flags);}...因为我想不出任何其他方法。regex.global没有二传手。regex.compile(new_pattern)已弃用,取而代之的是newRegExp(new_pattern)r

自动格式化 Pattern 的 JavaScript RegExp

我在stackflow社区看到很多格式化电话或数字(逗号和小数)的函数,比如这个问题here和别的。这是我想要的:第1步:为这样的模式维护库:varlibrary={fullDate:{pattern:/^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$/,error:"InvalidDateformat.UseYYYY-MM-DDformat."},fullDateTime:{pattern:/^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}[0-9]{1,2}:[0-9]{1,2}$/,error:"InvalidDateTimeformat.UseYY

Javascript RegExp 非捕获组

我正在编写一组正则表达式来将CSS选择器转换为ID和类数组。例如,我希望'#foo#bar'返回['foo','bar']。我一直在努力实现这一目标"#foo#bar".match(/((?:#)[a-zA-Z0-9\-_]*)/g)但当非捕获前缀?:应忽略#字符时,它会返回['#foo','#bar']。是否有比对每个返回字符串进行切片更好的解决方案? 最佳答案 您可以在循环中使用.replace()或.exec()来构建数组。使用.replace():vararr=[];"#foo#bar".replace(/#([a-zA-Z

javascript - Regexp.match.length 如果找不到则返回 NULL

我有一个JS正则表达式。vart1=str.match(/\[h1\]/g).length;如果str包含单词[h1]它工作正常,否则它会显示错误!如何解决问题? 最佳答案 vart1=(str.match(/\[h1\]/g)||[]).length; 关于javascript-Regexp.match.length如果找不到则返回NULL,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/quest

javascript - 为什么相同的 RegExp 表现不同?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:InterestingtestofJavascriptRegExpRegularexpressiontestcan'tdecidebetweentrueandfalse(JavaScript)Exampleofissue.内联运行时,结果如我所料。但是当存储为变量时,它会跳过中间跨度元素。//InlineRegExpfunctiongetToggleClasses(){vartoggler=[],elements=document.getElementsByTagName("*"),i=0,len=eleme

javascript - 检查字符串是否是 Javascript RegExp 的前缀

我在Javascript中定义了一个正则表达式,现在用户正在输入一个字符串。我想告诉他,如果他继续输入或者他已经走错了路,他的字符串是否仍然可以匹配RegExp。例如:varre=/a*b/;"a".isPrefixOf(re);//true"x".isPrefixOf(re);//falseisPrefixOf的实现会是什么样子?更新:感谢您的回答,正如brad所建议的那样,使正则表达式成为前缀证明似乎是一个很好的解决方法。但我仍在努力寻找通用解决方案。也许这样:我们创建一个新的正则表达式,用户输入后跟.*。这个正则表达式描述了用户仍然可以输入的所有单词。如果这个创建的正则表达式和原

javascript - .substr(0,1) 或 .charAt(0) 之间有什么区别?

我们想知道这个thread如果您想获取第一个字符(实际上是,它可以适用于您只需要一个字符的任何情况)。是否每个都比另一个快? 最佳答案 衡量它是关键!转到http://jsperf.com/substr-or-charat自己进行基准测试。substr(0,1)在我的机器上每秒运行21,100,301次操作,charAt(0)每秒运行550,852,974次。我怀疑charAt在内部将字符串作为数组访问,而不是拆分字符串。正如在评论中发现的那样,直接使用string[0]访问char比使用charAt(0)稍微快一些。

javascript - 性能问题 : String. 拆分然后在数组上走,还是RegExp?

我将在行分隔字符串上做一些工作。哪个更快,是先通过String.split拆分文本然后遍历结果数组,还是直接通过regexp遍历整个文本并在途中构建最终数组? 最佳答案 好吧,获得答案的最佳方法是花2分钟编写一个循环,双向执行一千次,然后检查firebug看看哪个更快;)在处理MXHR时,我不得不优化大量字符串处理,根据我的经验,在当前浏览器中,纯字符串方法比RegExp快得多。尽可能在最短的字符串上使用RegExp,并尽可能使用字符串方法。例如,我在当前代码中使用了这个小数字:varmime=mimeAndPayload.shif

javascript - 更改 RegExp 标志

所以基本上我自己编写了这个函数,以便能够计算字符串中子字符串的出现次数:String.prototype.numberOf=function(needle){varnum=0,lastIndex=0;if(typeofneedle==="string"||needleinstanceofString){while((lastIndex=this.indexOf(needle,lastIndex)+1)>0){num++;}returnnum;}elseif(needleinstanceofRegExp){//needle.global=true;returnthis.match(nee

javascript - 防止污染 JavaScript 中 RegExp 构造函数的属性

这是个难题,我知道如何解决它,但我想知道是否有(更)简单的方法。简而言之,无论何时在JavaScript中执行正则表达式,都会在RegExp构造函数中为某些属性赋值。例如:/foo/.test('football')//->trueRegExp.input//->"football"RegExp.rightContext//->"tball"我想在不影响这些属性的情况下执行正则表达式。如果那不可能(我认为不可能),我想至少在之后将它们恢复到以前的值。我知道input/$_是可写的,但大多数其他的似乎不是。一种选择可能是重建一个正则表达式来重新应用所有这些值,但我认为这会非常困难。我想要