特定字符串后的Javascript正则表达式

特定字符串后的Javascript正则表达式,javascript,regex,Javascript,Regex,我有几个Javascript字符串(使用jQuery)。它们都遵循相同的模式,以“ajax-”开头,以名称结尾。例如“ajax优先”、“ajax最后”、“ajax电子邮件”等等 如何使正则表达式只获取“ajax-”之后的字符串 因此,我想要的不是“ajax电子邮件”,而是“电子邮件”。如果您在其他用户的帖子上发表了评论,请尝试以下操作: var $li = jQuery(this).parents('li').get(0); var ajaxName = $li.className.match(

我有几个Javascript字符串(使用jQuery)。它们都遵循相同的模式,以“ajax-”开头,以名称结尾。例如“ajax优先”、“ajax最后”、“ajax电子邮件”等等

如何使正则表达式只获取“ajax-”之后的字符串


因此,我想要的不是“ajax电子邮件”,而是“电子邮件”。

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

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


以下内容仅供参考

var ajaxName = 'ajax-first'.match(/(\w+)$/)[0];
alert(ajaxName);
使用
\w
(word)模式并将其绑定到字符串的末尾。这将强制抓取超过最后一个连字符的所有内容(假设该值仅包含[大写/小写]字母、数字或下划线)

非正则表达式方法也可以使用该方法,再加上


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

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


以下内容仅供参考

var ajaxName = 'ajax-first'.match(/(\w+)$/)[0];
alert(ajaxName);
使用
\w
(word)模式并将其绑定到字符串的末尾。这将强制抓取超过最后一个连字符的所有内容(假设该值仅包含[大写/小写]字母、数字或下划线)

非正则表达式方法也可以使用该方法,再加上


你不需要正则表达式。如果前缀始终为“ajax-”,则可以执行以下操作:

var name = string.substring(5);

你不需要正则表达式。如果前缀始终为“ajax-”,则可以执行以下操作:

var name = string.substring(5);

您可以尝试将
ajax-
替换为

您可以尝试将
ajax-
替换为
我喜欢@Brad Christie提到的拆分方法,但我愿意这样做

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

如果始终只有由连字符分隔的由两部分组成的字符串,则此操作有效。如果您想将其推广到多个连字号字符串的任何特定部分,您需要编写一个包含索引的更复杂的函数,但随后必须检查越界错误等。

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

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


如果始终只有由连字符分隔的由两部分组成的字符串,则此操作有效。如果您想将它推广到多个连字号字符串的任何特定部分,您需要编写一个包含索引的更复杂的函数,但是您必须检查越界错误等。

好的调用。但是当我尝试它时,我得到以下错误<代码>对象ajax第一次没有方法“substring”我是javascript新手,所以我不知道如何解决这个问题。。。这是我的密码
var$class=jQuery(this).parents('li').attr('class').match(/ajax-[\w]+/);警报($class.substring(5))虽然这个答案代表了情况的真相,但它不是对所问问题的答案。alert(jQuery(this).parents('li').attr('class').substring(5));那应该行的,打得好。但是当我尝试它时,我得到以下错误<代码>对象ajax第一次没有方法“substring”
我是javascript新手,所以我不知道如何解决这个问题。。。这是我的密码
var$class=jQuery(this).parents('li').attr('class').match(/ajax-[\w]+/);警报($class.substring(5))虽然这个答案代表了情况的真相,但它不是对所问问题的答案。alert(jQuery(this).parents('li').attr('class').substring(5));这应该行得通。如果字符串是
ajax first name
或类似的字符串,则只捕获最后一组字母、数字或下划线,这将导致中断。@code骑师:同意,这就是我添加免责声明的原因。即使在查看您的答案之后,我仍然没有看到一个免责声明来解决我的问题,即您的代码在最后一个连字符后获取字符串,而不是询问者指定的“在'ajax-'后获取字符串?”。您介意链接到或引用其他用户的帖子(用于上下文)吗?@CodeJockey:这是在对@styr的答案的评论中所做的评论(带有代码示例)。当我看到它试图从
className
属性中解析,并且它本身可能不是一个类名之后,我决定采用不同的正则表达式方法。如果字符串是
ajax first name
或类似的字符串,这将断开,只捕获最后一组字母、数字或下划线。@CodeJockey:同意,这就是我加入免责声明的原因。即使在查看了您的答案之后,我仍然没有看到一个免责声明来解决我的问题,即您的代码会抓住最后一个连字符后面的字符串,而不是询问者指定的“抓住'ajax-'后面的字符串?”。您介意链接或引用其他用户的帖子(用于上下文)吗?@CodeJockey:这是在对@Styrr的回答的评论中所做的评论(带有代码示例)。当我看到它试图从
className
属性中解析,并且它本身可能不是一个类名之后,我决定采用不同的正则表达式方法。应该提到的是,您是否在jQuery调用中使用它,因为这对您的情况的可能解决方案造成了一定的限制。@code Jockey:对此表示抱歉。这是jQuery。无论您是否在jQuery调用中使用它,都应该提到,因为这会对您的情况的可能解决方案造成某些限制。@Code Jockey:对此感到抱歉。是jQuery,在复习的时候遇到了这个;它被标记为低质量。可能需要详细说明。我想如果您能添加更多详细信息,许多用户会很感激,比如说,为什么这是可能的,以及它是如何解决问题的;它被标记为低质量。我想如果你能添加更多的细节,比如说,为什么这是可能的,以及它是如何解决问题的,很多用户都会很感激。