[英]how to regex the string between two tokens and return string without the tokens?
[英]how to regex a string between two tokens in Javascript?
问了很多遍,但我无法正常工作...
我有这样的字符串:
"text!../tmp/widgets/tmp_widget_header.html"
并试图像这样提取widget_header
:
var temps[i] = "text!../tmp/widgets/tmp_widget_header.html";
var thisString = temps[i].regexp(/.*tmp_$.*\.*/) )
但这不起作用。
有人可以告诉我我在做什么错吗?
谢谢!
这将打印widget_header
:
var s = "text!../tmp/widgets/tmp_widget_header.html";
var matches = s.match(/tmp_(.*?)\.html/);
console.log(matches[1]);
var s = "text!../tmp/widgets/tmp_widget_header.html",
re = /\/tmp_([^.]+)\./;
var match = re.exec(s);
if (match)
alert(match[1]);
这将匹配:
/
字符 tmp_
.
字符。 这些被捕获。 .
字符 如果找到匹配项,它将位于结果数组的索引1
处。
在您的代码中:
var temps[i] = "text!../tmp/widgets/tmp_widget_header.html";
var thisString = temps[i].regexp(/.*tmp_$.*\.*/) )
你是说:
“匹配以任何数量的任何字符开头,后跟“ tmp_”,输入结束,后跟任意数量的句点的任何字符串。”
.* : Any number of any character (except newline)
tmp_ : Literally "tmp_"
$ : End of input/newline - this will never be true in this position
\. : " . ", a period
\.* : Any number of periods
另外,在使用regex()函数时,您需要传递字符串,使用字符串表示法,例如var re = new RegExp("ab+c")
或var re = new RegExp('ab+c')
不在正则表达式中且使用斜杠。 您也可能有一个多余的或缺少的括号,并且实际上没有捕获任何字符。
您想要做的是:
“找到一个字符串,该字符串的开头是输入的开头,后跟任何一个或多个字符,后跟“ tmp_”;后跟一个句点,然后是一个或多个任何字符,然后是输入结尾; t包含一个或多个任何字符。捕获该字符串。”
所以:
var string = "text!../tmp/widgets/tmp_widget_header.html";
var re = /^.+tmp_(.+)\..+$/; //I use the simpler slash notation
var out = re.exec(string); //execute the regex
console.log(out[1]); //Note that out is an array, the first (here only) catpture sting is at index 1
此正则表达式/^.+tmp_(.+)\\..+$/
表示:
^ : Match beginning of input/line
.+ : One or more of any character (except newline), "+" is one or more
tmp_ : Constant "tmp_"
\. : A single period
.+ : As above
$ : End of input/line
您也可以将其用作RegEx('^.+tmp_(.+)\\..+$');
不是这样,当我们使用RegEx();
我们没有斜杠,而是使用引号(单或双将起作用)将其作为字符串传递。
现在,这也将匹配var string = "Q%$#^%$^%$^%$^43etmp_ebeb.45t4t#$^g"
并out == 'ebeb'
。 因此,根据具体用途,您可能希望用括号“ []”字符列表替换用于表示任何字符(换行符除外)的任何“。”,因为这可能会过滤掉不需要的结果。 您的里程可能会有所不同。
有关更多信息,请访问: https : //developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.