【问题标题】:Javascript Regex after specific string特定字符串后的Javascript正则表达式
【发布时间】:2011-10-11 19:29:53
【问题描述】:

我有几个 Javascript 字符串(使用 jQuery)。它们都遵循相同的模式,以“ajax-”开头,以名称结尾。例如'ajax-first'、'ajax-last'、'ajax-email'等

我怎样才能使正则表达式只抓取 'ajax-' 之后的字符串?

所以我想要的不是“ajax-email”,而是“email”。

【问题讨论】:

  • 应该提到您是否在 jQuery 调用中使用它,因为这对您的情况的可能解决方案设置了一定的限制。
  • @Code Jockey:很抱歉。它是 jQuery。

标签: javascript regex


【解决方案1】:

您不需要 RegEx。如果您的前缀始终是“ajax-”,那么您可以这样做:

var name = string.substring(5);

【讨论】:

  • 好电话。但是当我尝试它时,我收到以下错误。 Object ajax-first has no method 'substring'我是 javascript 新手,所以我不知道如何解决这个问题……这是我的代码。 var $class = jQuery(this).parents('li').attr('class').match(/ajax-[\w]+/); alert( $class.substring(5) );
  • 虽然这个答案代表了情况的真相,但它*NOT*是对所提问题的回答。
  • alert(jQuery(this).parents('li').attr('class').substring(5));那应该可以。
【解决方案2】:

如果您对其他用户的帖子发表了评论,请尝试以下操作:

var $li = jQuery(this).parents('li').get(0);
var ajaxName = $li.className.match(/(?:^|\s)ajax-(.*?)(?:$|\s)/)[1];

演示可以be found here


以下仅供参考

var ajaxName = 'ajax-first'.match(/(\w+)$/)[0];
alert(ajaxName);

使用\w(单词)模式并将其绑定到字符串的末尾。这将强制抓取最后一个连字符之后的所有内容(假设该值仅包含 [大写/小写] 字母、数字或下划线)。

非正则表达式方法也可以使用String.split 方法,再加上Array.pop

var parts = 'ajax-first'.split('-');
var ajaxName = parts.pop();
alert(ajaxName);

【讨论】:

  • 如果字符串是ajax-first-name 或类似的字符串,这会中断,只捕获最后一组字母、数字或下划线。
  • @CodeJockey:同意,这就是我加入免责声明的原因。
  • 即使在查看了您的答案之后,我仍然没有看到一个免责声明解决了我的担忧,即您的代码在最后一个连字符之后抓取字符串,而不是“在 'ajax-' 之后抓取字符串?”作为提问者指定的
  • 您介意链接或引用其他用户的帖子(作为上下文)吗?
  • @CodeJockey:这是对@Styrr 答案的评论中的评论(带有代码示例)。在我看到它试图从 className 属性中解析出来并且可能不是单独的类名之后,我决定采用不同的正则表达式方法。
【解决方案3】:

您可以尝试将ajax- 替换为""

【讨论】:

  • 复习的时候遇到这个;它被标记为低质量。可能需要详细说明。
  • 我认为如果您能添加更多详细信息,例如,为什么会这样以及它如何解决问题,许多用户会很感激。
【解决方案4】:

我喜欢@Brad Christie 提到的拆分方法,但我会这样做

function getLastPart(str,delimiter) {
  return str.split(delimiter)[1];
}

如果您始终只有由连字符分隔的两部分字符串,则此方法有效。如果您想将它概括为多连字符字符串的任何特定部分,您需要编写一个包含索引的更复杂的函数,但是您必须检查超出范围的错误等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 2022-12-03
    相关资源
    最近更新 更多