我正在嘗試撰寫正則運算式以匹配 ISO8601 標準的時間持續時間,但只有在哪里PT和M或S有效。
到目前為止,我已經找到了 ISO8601 正則運算式的完整示例,但它比我需要的要復雜。我需要如下匹配持續時間:
- PT7S
- PT10M50S
- PT150S
本質上,我希望正則運算式始終檢查:
- 大寫
PT的在字串的開頭 - M 前面有一個整數
- S 前面有一個整數
- M 在 S 之前
到目前為止我的嘗試:
- 大寫的 PT 開頭 =
^PT - M 前面有一個整數 =
[0-9] M- 除非這允許像10.5M因為5M計數 - S 前面有一個整數 = 同上
- M 在 S 之前。再次不知道!
我真的一直在努力解決這個問題,我一直在努力讓每個部分都匹配,所以我可以稍后嘗試將它們全部組合起來,但我無法克服第一個障礙。
uj5u.com熱心網友回復:
不應該比
const rxIso8601Duration = /^PT((([0-9] M)?([0-9] S))|([0-9] M))$/ ;
分解它:
^ // - anchor the match at start-of-text, followed by
PT // - the literal PT, followed by
( // - a group, consisting of either
( // - a group, consisting of
([0-9] M)? // - an optional minutes designation, followed by
([0-9] S) // - a required seconds designation
) //
| // or
([0-9] M) // - a required minutes designation
) // the whole of which is followed by
$ // end-of-text
如果您想允許小數分鐘或秒,只需更改適當的子運算式:
([0-9] M)
識別類似的模式123M,但不是123.456M([0-9] (\.[0-9] )?M)
不僅會識別123M,還會識別匹配123.456M
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/416969.html
標籤:
上一篇:無法讀取表單元素
