È possibile utilizzare il limite di parola nei pressi @
con un lookbehind negativo per verificare se siamo all'inizio di una stringa o subito dopo uno spazio bianco, quindi verificare se il 1 ° simbolo non è all'interno della classe indesiderato [^\s\-_.]
:
(?<=^|\s)[^\s\-_.]\w*(?:[-+.]\w+)*\[email protected]\w+(?:[-.]\w+)*\.\w+(?:[-.]\w+)*
Vedi demo
Lista di partite:
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
Note aggiuntive sul loro utilizzo e la notazione alternativa
Si noti che è delle migliori pratiche da usare come pochi sfuggiti caratteri possibile nel regex, quindi, il [^\s\-_.]
può essere scritta come [^\s_.-]
, con il trattino alla fine del carattere classe che denota ancora un trattino letterale, non un intervallo. Inoltre, se prevedi di utilizzare il pattern in altri motori regex, potresti trovare difficoltà con l'alternanza nel lookbehind e quindi puoi sostituire (?<=\s|^)
con l'equivalente (?<!\S)
. Vedere this regex:
(?<!\S)[^\s_.-]\w*(?:[-+.]\w+)*\[email protected]\w+(?:[-.]\w+)*\.\w+(?:[-.]\w+)*
E, ultimo ma non meno importante, se avete bisogno di utilizzare in JavaScript o altri linguaggi che non supportano lookarounds, sostituire il (?<!\S)
/(?<=\s|^)
con un (non) gruppo di cattura di (\s|^)
, avvolgere l'intero modello e-mail parte con un altro set di parentesi catturare e utilizzare la lingua significa per afferrare Gruppo 1 contenuti:
(\s|^)([^\s_.-]\w*(?:[-+.]\w+)*\[email protected]\w+(?:[-.]\w+)*\.\w+(?:[-.]\w+)*)
Vedere le regex demo.
fonte
2015-05-14 08:39:52
uso intelligente del \ b' 'là;) –