台灣最大程式設計社群網站
線上人數
1586
 
會員總數:246631
討論主題:190057
歡迎您免費加入會員
討論區列表 >> Java Script/ Node.js >> 請教正規表示式
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
請教正規表示式
價值 : 100 QP  點閱數:913 回應數:4
樓主

lethal
初學者
621 88
3285 266
發送站內信

請問學長,有方法可以使用正規表示式將
https://www.youtube.com/watch?v=Rw-KIbXy3Gk
變成:
https://www.youtube.com/embed/Rw-KIbXy3Gk?enablejsapi=1&wmode=opaque
還是只能土法煉鋼用 split 慢慢切字串來寫?
aa = 'https://www.youtube.com/watch?v=Rw-KIbXy3Gk'
'https://www.youtube.com/embed/'+aa.slice(-11,-1)+'?enablejsapi=1&wmode=opaque'

搜尋相關Tags的文章: [ 正規表示式 ] ,
本篇文章發表於2016-07-24 00:35
1樓
作者回應

lethal
檢舉此回應
上述用 slice 好像不行,但使用 substr 就行了。
'https://www.youtube.com/embed/'+aa.substr(31)+'?enablejsapi=1&wmode=opaque'

但因為substr 是算字數的方式,如果網址變成 https 或,多了一個字,就會發生問題。
是否能使用正規表示式判斷 "v=" ,來截取出需要的字串(Rw-KIbXy3Gk)後,再帶入網址內?
本篇文章回覆於2016-07-24 00:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

小羊窒息
捐贈 VP 給 缺氧的羊:窒息 檢舉此回應
如果來源網址必定是 https://www.youtube.com/watch?v=【變數資料】
那你只需要抓出【變數資料】

再換成 https://www.youtube.com/embed/【變數資料】?enablejsapi=1&wmode=opaque

===============================
//快速檢測youtube網址...
//參考資料:http://stackoverflow.com/questions/28735459/how-to-validate-youtube-url-in-client-side-in-text-box
function matchYoutubeUrl(url)
{
var p = /^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/;
var matches = url.match(p);
if(matches)
{
return matches[1];
}
return false;
}

本篇文章回覆於2016-07-24 22:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

lethal
檢舉此回應
小羊窒息大大,沒錯,就是如您所說的:
源網必定是 https://www.youtube.com/watch?v=【變數資料】
再換成 https://www.youtube.com/embed/【變數資料】?enablejsapi=1&wmode=opaque

目前用這種方式帶入來使用,沒有問題:
https://www.youtube.com/embed/'+aa.slice(-11)+'?enablejsapi=1&wmode=opaque
但這樣好像有點投機,所以想研究一下用正規式一行寫完。
本篇文章回覆於2016-07-25 21:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
最有價值解答

小羊窒息
捐贈 VP 給 缺氧的羊:窒息 檢舉此回應
用我貼的那個正規化函數就行了(你有興趣也可以去看那個參考網址, 裡面很多寫法)

重點就是, 可能會出現的【youtube有效網址】都要考慮進來...
(不然就得事先會限制使用者輸入資料時只能照著你的規則來輸入)

例如:
https://www.youtube.com/watch?v=DP3TSMhKZnk&list=PLvVNZSE0M_YefRKPYu901AfsjI7pMHm_Q
https://youtu.be/DP3TSMhKZnk?list=PLvVNZSE0M_YefRKPYu901AfsjI7pMHm_Q

https://www.youtube.com/watch?v=DP3TSMhKZnk&t=30s
https://youtu.be/DP3TSMhKZnk?t=30s

本篇文章回覆於2016-07-26 10:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.