我有一個用于匹配 YouTube URI 的正則運算式
/^(https:\/\/youtu.be\/|https:\/\/www.youtube.com\/watch\?v=|https:\/\/www.youtube-nocookie.com\/embed\/)([a-zA-Z0-9]{6,12}) /
它在 js 中運行良好
/^(https:\/\/youtu.be\/|https:\/\/www.youtube.com\/watch\?v=|https:\/\/www.youtube-nocookie.com\/embed\/)([a-zA-Z0-9]{6,12}) /.test('https://www.youtube.com/watch?v=PZP1wGptlUE&list=RDT4X7Ev7RIZA&index=2')
// true
但為什么它在 html input[pattern] 中失敗?
請匹配要求的格式
function handle(e) {
e.preventDefault();
}
<form onsubmit="handle">
<input placeholder="YouTube URI"
type="url"
pattern="^(https:\/\/youtu.be\/|https:\/\/www.youtube.com\/watch\?v=|https:\/\/www.youtube-nocookie.com\/embed\/)([a-zA-Z0-9]{6,12}) "
value="https://www.youtube.com/watch?v=PZP1wGptlUE&list=RDT4X7Ev7RIZA&index=2"
required>
<button type="submit">submit</button>
</form>
uj5u.com熱心網友回復:
HTML 輸入模式$在末尾有一個隱式,這意味著它期望匹配整個輸入。
你沒有考慮&list=RDT4X7Ev7RIZA&index=2,所以它失敗了。
你可以添加類似的東西(\&.*)?來修復它
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/370592.html
標籤:javascript html 正则表达式
