返回Javascript中字符串的特定部分

返回Javascript中字符串的特定部分,javascript,regex,Javascript,Regex,我想处理以下字符串:20\u hbeu50272359\u 402\u 21 因此,我只剩下hbeu50272359有没有办法删除这些外部数字?我不知道该怎么办 字符串也可以采用以下格式: hbeu50272359_402; u 21(?!\d)[^\u]+将在两个字符串上工作,并且不需要第二个字符串以hbeu开头 您可以使用split “20_hbeu50272359_402_21”。拆分(“U”)[1] 上面根据\uuuu字符分割字符串,然后使用[1]选择所需的部分(在返回的数组中或[“20

我想处理以下字符串:
20\u hbeu50272359\u 402\u 21

因此,我只剩下
hbeu50272359
有没有办法删除这些外部数字?我不知道该怎么办

字符串也可以采用以下格式:

hbeu50272359_402; u 21
(?!\d)[^\u]+
将在两个字符串上工作,并且不需要第二个字符串以
hbeu
开头


您可以使用
split

“20_hbeu50272359_402_21”。拆分(“U”)[1]

上面根据
\uuuu
字符分割字符串,然后使用
[1]
选择所需的部分(在返回的数组中或
[“20”、“hbeu50272359”、“402”、“21”]

这当然意味着字符串总是遵循相同的格式。如果没有,您可以使用正则表达式匹配,其前缀似乎是
hbeu
。类似于
/(hbeu[0-9]+)/
的内容,但我需要更多信息来提供更好的
拆分方法

更新:

根据您的更新,您可以进行如下正则表达式匹配:

var stuffWeWant = "20_hbeu50272359_402_21".match(/(hbeu[0-9]+)/)[0];
// this will work regardless of the string before and after hbeu50272359.

一般来说,与使用正则表达式相比,拆分解决方案的性能更好。

*
是贪婪的,引擎会尽可能多次重复它,因此正则表达式会继续尝试将
\u
与下一个字符匹配,从而实现匹配

_hbeu50272359_402_21
要取消冻结,应添加一个

_(.*?)_

现在它将匹配第一个
\u一些字符
我将使用
字符串。替换()

var s = "20_hbeu50272359_402_21";
var part = s.replace(/.*?_(.*?)_.*/, '$1');
搜索模式匹配任何字符
*
,直到下一次出现
\uu
。使用ungreedy量词
可确保它在字符串中的最后一个
\uu
之前不匹配任何字符。它将捕获文本,直到下一个
进入捕获组<代码>(.*)
。然后匹配下一个
\uu
和剩余的字符串


替换模式使用
$1
来处理第一个捕获组的内容,并丢弃剩余的匹配项。

您可以使用
字符串。还可以使用replace
函数。换

  • 一个或多个数字加上以下下划线符号

  • 下划线加上一个或多个数字,后跟另一个下划线或线锚的结尾

使用空字符串

> "20_hbeu50272359_402_21".replace(/_\d+(?=_|$)|^\d+_/g, "")
'hbeu50272359'
> "hbeu50272359_402_21".replace(/_\d+(?=_|$)|^\d+_/g, "")
'hbeu50272359'

你在跑哪只狼?显示您的尝试..Jquery这去掉了最后一个:n.replace(/.*/,'')这是因为
*
是贪婪的..您需要处理的所有字符串都是A_B_C_D形式,其中B是您需要的吗?
var s='20_hbeu50272359_402; 21'/_(1),如果所有字符串都是相同的形式,并且第二部分始终是它们所需要的部分,那么这就是我的工作方式。不幸的是,他们在这个问题上没有提供足够的信息来确定答案。完全同意。如果OP更新,将使用更强大的解决方案进行更新。您不能扩展“不工作”吗?当我放入
“20_hbeu50272359_402_21”时,匹配(/(hbeu[0-9]+)/)[0]在我的控制台中,我得到了
hbeu50272359
是的。我正在使用firefox。您看到哪个浏览器出现故障?很抱歉,您是对的,它工作正常,非常感谢match:)感谢match他会得到正确答案:
20\u hbeu50272359\u 402\u 21.match(/\uU(.*))[1]
在这两种情况下,split将如何为您提供所需的输出?