草庐IT

REGEXP_EXTRACT

全部标签

javascript - 将连续的 ","合并为单个 ","并在一个 RegExp 中删除前导和尾随 ","

假设我有一个字符串",,,a,,,,,b,,c,,,,d,,,,"我想把它转换成"a,b,c,d"在1个RegExp操作中。我可以在2个RegExp操作中完成,例如varstr=",,,a,,,b,,,,c,,,,,,,,d,,,,,,";str=str.replace(/,+,/g,",").replace(/^,*|,*$/g,'');是否可以在1个RegExp操作中执行此操作? 最佳答案 您可以使用正则表达式,在开头或后跟逗号或在and处,然后将其替换为空字符串。/^,*|,(?=,|$)/g1stAlternative^,*

javascript - 对于具有全局选项的模式,连续调用 RegExp 测试失败

这个问题在这里已经有了答案:WhydoesaRegExpwithglobalflaggivewrongresults?(7个答案)关闭7年前。我一整天都在为这个问题苦苦挣扎,我不知道是我做错了什么,还是我在Chrome的JavaScript引擎中发现了一个错误。似乎连续调用带有全局标志的RegExp对象会为相同的输入字符串返回不一致的结果。我正在测试以下功能:functiontestRegex(pattern,array){document.writeln('Pattern='+pattern+',Array='+array+'');for(varii=0;ii');}document

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 - 性能问题 : 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