Sadece alfanümerik kelimeleri seçerek.

3 Cevap php

Ben alfabe veya sayıların bir kombinasyonu olan kelimeler, yani bir dize sadece alfanümerik kelimeleri bulmak için normal ifade bulmaya çalışıyorum. Bir kelime saf numaraları veya saf karakter ise bunu silmek gerekiyor.

3 Cevap

Bu normal ifade deneyin:

\b([a-z]+[0-9]+[a-z0-9]*|[0-9]+[a-z]+[a-z0-9]*)\b

Ya da daha kompakt:

\b([a-z]+[0-9]+|[0-9]+[a-z]+)[a-z0-9]*\b

Bu, bir veya daha fazla harf ya da rakamlardan tarafından takip edilebilir bir veya daha fazla rakam ya da tam tersi takip ettiği bir veya daha fazla harf ile başlamak ya da tüm kelimeleri (sözcük sınırları \b unutmayın) eşleşir. Yani en az bir harf ve en az bir rakam durum her zaman yerine getirilir.

Lookaheads ile:

'/\b(?![0-9]+\b)(?![a-z]+\b)[0-9a-z]+\b/i'

Ayrıca örnek kullanımını gösterir hızlı bir test:

$str = 'foo bar F0O 8ar';
$arr = array();
preg_match_all('/\b(?![0-9]+\b)(?![a-z]+\b)[0-9a-z]+\b/i', $str, $arr);
print_r($arr);

Çıktı:

F0O
8ar

Bu hangi yapabilirsiniz döngü aracılığıyla, tüm bireysel alfanümerik kelimeleri dönecektir. Ben regex kendisi tarafından bütün iş yapabilirsiniz sanmıyorum.

\b[a-z0-9]+\b

Emin olun işaretlediğiniz harf duyarsız olarak.