簡體   English   中英

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

[英]Return specific part of string in Javascript

我想操縱以下字符串: 20_hbeu50272359_402_21

所以我只剩下hbeu50272359有沒有辦法如何刪除那些外部數字? 不確定如何去做。

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

hbeu50272359_402_21

你可以使用split

"20_hbeu50272359_402_21".split('_')[1]

上面根據_ char分割你的字符串,然后使用[1]選擇你想要的部分(在返回的數組中或["20", "hbeu50272359", "402", "21"]

這當然會假設您的字符串始終遵循相同的格式。 如果沒有,你可以使用regEx匹配看似hbeu的前綴。 /(hbeu[0-9]+)/但我需要更多的信息來提供更好的方法來split方法

更新:

根據您的更新,您可以執行正則表達式匹配,如:

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

(?!\\d)[^_]+將對兩個字符串都有效,並且不需要第二個字符串以hbeu

https://regex101.com/r/zF0iR5/3

你也可以使用string.replace函數。 即,替換

  • 一個或多個數字加上開頭的下面的下划線符號,

  • 要么

  • 下划線加上一個或多個數字后跟另一個下划線或行錨點的結尾

用空字符串。

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

通常,與使用正則表達式相比,拆分解決方案的性能更好。

*貪婪的 ,引擎會盡可能多地重復它,所以正則表達式繼續嘗試將_與下一個字符匹配,從而得到匹配

_hbeu50272359_402_21

為了使它不合適,你應該添加一個?

_(.*?)_

現在它將匹配第一個_somecharacters_

我會使用String.replace()

var s = "20_hbeu50272359_402_21";
var part = s.replace(/.*?_(.*?)_.*/, '$1');

搜索模式匹配任何char .*直到下一次出現_ 使用不合理的量詞? 確保它與字符串中的最后一個_之前的任何字符都不匹配。 它捕獲文本直到下一個_進入捕獲組。 (.*?) 然后匹配下一個_和剩余的字符串。

替換模式使用$1來解決第一個捕獲組的內容並丟棄剩余的匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM