簡體   English   中英

正則表達式全詞模式

[英]regular expression whole word pattern

我對正則表達式非常陌生。 我的字符串如下所示:

"6 years, 10 months, 1 days, 23 hours, 15 seconds"

基本上,我希望匹配時間和單詞的每個部分,因此javascripts string.match的結果數組如下所示:

[0] = "6 years"
[1] = "10 months"
[2] = "1 days"
[3] = "23 hours"
[4] = "15 seconds"

這是我嘗試過的

/(\d{0,}\s(years|months|hours|days|seconds))/

但是這個正則表達式測試器顯示我在反向引用中也捕獲了每個單詞http://rubular.com/r/qkyFJrBCq8

/(\d{0,}\s\w*)\,{0}/

當我嘗試匹配逗號時,它遍地都是。 http://rubular.com/r/PXoPHVibH0

我不確定該怎么做,我在匹配整個單詞模式時所讀的解釋也不是很清楚。

一如既往,謝謝大家!

您可以將split與更簡單的正則表達式用於定界符:

var str = '6 years, 10 months, 1 days, 23 hours, 15 seconds';
var result = str.split(/,\s*/g);

,\\s*正則表達式僅匹配逗號,后跟任意數量的空格。

Paulpro的答案似乎是這里最好的答案,但是不帶括號的括號 (?:也應該對您有用:

/(\d+\s(?:years|months|hours|days|seconds))/

您如何使用split功能?

對於正則表達式,您可以簡單地使用以下模式:

/[0-9]+\s*[a-z]/i

如果您確實想匹配您擁有的模式,則正則表達式的主要問題是括號的放置方式。 此模式將匹配單個數字單位組合:

/(\d+\s((years)|(months)|(hours)|(days)|(seconds)))/

根據SO上的這個答案,在您的正則表達式中使用g標志進行全局匹配 結果可以方便地以數組形式返回:

var re = /(\d+\s(?:years|months|hours|days|seconds))/g;
var str = "6 years, 10 months, 1 days, 23 hours, 15 seconds";
var myArray = str.match(re);
alert(myArray);

請注意, exec返回一個匹配項,而match一次返回一個數組中的所有匹配項。

在這里觀看現場演示

暫無
暫無

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

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