1

好的,我的一个朋友用他在一段代码中找到的正则表达式与我对质,我一点经验都没有。我试图弄清楚,我真的认为它很基本,但我遇到了麻烦。

表达式为:^(.*?){0,1}>$

所以这是我从各种教程和定义中收集到的:

  • ^代表“开始”和$结束,因此它们之间的表达式必须描述完整的字符串才能被选中。
  • *?是一个惰性运算符(意​​味着它首先尝试取前面字符的 0,如果不匹配,则取 1、2、3 等)。
  • (.*?)所以这必须意味着“尽可能少的字符”。
  • (.*?){0,1}: 现在我的麻烦开始了。“尽可能少取字符,零次还是一次”?
  • ^(.*?){0,1}>$:“尽可能少的字符,零次或一次,字符 > 后跟结束”?

这基本上意味着“选择所有内容,如果 > 在字符串的末尾”?我很困惑......如果有人能对这个(我猜是非常基本的)问题有所了解,我将不胜感激......

编辑:好的,为了防止误解,在这种情况下使用正则表达式:

.replace(/^(.*?){0,1}>$/,"$1/>");
4

1 回答 1

4

你所拥有的相当于以下内容:

^(.*)>$

首先写它的人可能很着急,并没有意识到他们在里面放了这么多无关紧要的东西。


澄清你的用例后,只需使用这个:

.replace(/>$/, '/>');

它会在结束>标记之前添加一个斜杠(如果有的话)。


如果您只想在斜线不存在时添加斜线,请使用:

.replace(/([^\/])>$/, '$1/>');
于 2012-06-22T21:55:18.487 回答