[英]Javascript Regular Expression - Limit number of valid characters
我正在學習javascript中的正則表達式,我認為有些東西我不知道。
我正在使用一個示例,我正在嘗試從字符串中提取有效的電子郵件地址。 我收到了有效的電子郵件,但我也收到了無效的電子郵件。 這是代碼:
var teststring = "This is my test string with a valid email: this@that.com,
and an invalid email: this@broken.1. Pull only the valid email.";
teststring.match(/[A-Za-z0-9_+.-]+@[A-Za-z0-9]+.[A-Za-z]{2,3}/g)
當我運行匹配方法時,我收到有效的電子郵件“this@that.com”,並返回無效的電子郵件“this@broken.1”。
我認為最后一個方括號末尾的{2,3}應該指定括號內的特定字符搜索只有在它們包含2到3個條件實例時才有效,那么為什么破壞的電子郵件與最后一個點返回后只是“1”?
我還應該補充一點,我完全理解這不是一個完整的電子郵件驗證表達式。 這對我來說純粹是一個試圖理解的正則表達式問題。 我正在尋找一個明確的答案,但無法找到我正在尋找的確切內容。
謝謝
.
將匹配任何角色。 匹配實際.
你需要\\.
teststring.match(/[A-Za-z0-9_+.-]+@[A-Za-z0-9]+\.[A-Za-z]{2,3}/g)
你需要逃脫最后一次.
。 否則,它意味着“匹配任何字符”,因此表達式正在捕獲這些塊:
this
@
brok
en
嘗試:
teststring.match(/[A-Za-z0-9_+.-]+@[A-Za-z0-9]+\.[A-Za-z]{2,3}/g)
由於您正在尋找大寫或小寫字母,因此可以通過使其不區分大小寫來簡化搜索。 正則表達式末尾的/ g使匹配成為全局(即返回所有這些匹配); 你可以使用/ i,如果你只想要一場比賽,但你不關心案例。 例如,
"CaSe InSeNsItIvE iS cOoL; I lOvE cAsEs".match(/case/i)
返回單元素數組[“CaSe”]。 要獲得所有不區分大小寫的匹配項,只需使用/ gi:
"CaSe InSeNsItIvE iS cOoL; I lOvE cAsEs".match(/case/gi)
返回[“CaSe”,“cAsE”]
您的查詢可以縮短為
teststring.match(/[A-Z0-9_+.-]+@[A-Z0-9]+\.[A-Z]{2,3}/gi)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.