Как отсеять только англоязычные слова?
Есть список выражений типа
Сделал дело - гуляй смело
Business before pleasure
喜びの前のビジネス
Correct - 喜びの前
23452345 345 234523
Ваше имя - Armstormg?
Are you sure?
Are you 18 years old?
Надо с помощью preg_match проверку, которая позволит вывести только те, где отсутствуют не английский символы (кирилица, иероглифы, одни лишь цифры). Т.е. из текущего списка оставить
Business before pleasure
Are you sure?
Are you 18 years old?
Набросал вот такой вариант
if(preg_match('/[g-z]|[a-f]{3,}/i',$start_array[$i]['titl'] ))
{
выводить строку
}
Но не работает
Ответы (1 шт):
Автор решения: UModeL
→ Ссылка
Само выражение будет примерно таким: /^([\da-z -]*?[a-z]+[\da-z -]*?[?.!]*?)$/mi
В PHP это будет выглядеть так:
$rExp = "/^([\da-z -]*?[a-z]+[\da-z -]*?[?.!]*?)$/mi";
$sTxt = "Сделал дело - гуляй смело
1991 year - Business before pleasure
喜びの前のビジネス
Correct - 喜びの前
23452345 345 234523
Ваше имя - Armstormg?
I am 20
Are you sure?
Are you 18 years old?
50 не 20.
50 is not 20...";
foreach (explode("\n", $sTxt) as $str) {
if (preg_match($rExp, $str)) echo "$str\n";
}
Аналогичное демо на JS:
const rExp = /^[\da-z -]*?[a-z]+[\da-z -]*?[?.!]*?$/mi;
const sTxt = `Сделал дело - гуляй смело
1991 year - Business before pleasure
喜びの前のビジネス
Correct - 喜びの前
23452345 345 234523
Ваше имя - Armstormg?
I am 20
Are you sure?
Are you 18 years old?
50 не 20.
50 is not 20...`;
sTxt.split('\n').forEach((str) => {
if (rExp.test(str)) document.write(`${str}<br>`);
});