Я пытаюсь найти регулярное выражение, которое будет соответствовать любому символу, кроме буквы или числа. Итак, такие символы, как (,, @, £, () и т. Д.
Найдя, я хочу заменить его пустым пространством.
Любой совет.
Я пытаюсь найти регулярное выражение, которое будет соответствовать любому символу, кроме буквы или числа. Итак, такие символы, как (,, @, £, () и т. Д.
Найдя, я хочу заменить его пустым пространством.
Любой совет.
Ответы:
Чтобы найти что-либо, кроме буквы или цифры, вы можете попробовать следующее:
[^a-zA-Z0-9]
И заменить:
var str = 'dfj,dsf7lfsd .sdklfj';
str = str.replace(/[^A-Za-z0-9]/g, ' ');
Это регулярное выражение соответствует всему, что не является буквой, цифрой или _
символом подчеркивания ( ).
\W
Например, в JavaScript:
"(,,@,£,() asdf 345345".replace(/\W/g, ' '); // Output: " asdf 345345"
Ты ищешь:
var yourVar = '1324567890abc§$)%';
yourVar = yourVar.replace(/[^a-zA-Z0-9]/g, ' ');
Это заменяет все не буквенно-цифровые символы пробелом.
Буква «g» в конце заменяет все вхождения.
Вместо указания аз (нижний регистр) и AZ (заглавные буквы) , которые вы можете использовать в-чувствительны к регистру вариант: /[^a-z0-9]/gi
.
Это слишком поздно, но, поскольку нет принятого ответа, я хотел бы дать то, что я считаю самым простым: \ D - соответствует всем нецифровым символам.
var x = "123 235-25%";
x.replace(/\D/g, '');
Результат в x: "12323525"
См. Https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions.
попробуйте выполнить str.replace (/ [^ \ w] /); Он заменит все не алфавиты и числа из вашей строки!
Изменить 1: str.replace(/[^\w]/g, ' ')
str.replace(/[^\w]/g, ' ')
. Если вы не включите /g
флаг, он заменит только первое вхождение. И если вы не определяете заменяющую строку, здесь пустое место ' '
, она будет заменена undefined
повсюду. Наконец, подчеркивания не будут заменены, потому что они совпадают \w
. Этот ответ не идеален.
/[A-Z]/ig
/[^A-Z]/ig
/[0-9]/g
или/\d+/g
/[^0-9]/g
или/\D+/g
/[^A-Z0-9]/ig
Возможны и другие закономерности
Просто чтобы другие увидели:
someString.replaceAll("([^\\p{L}\\p{N}])", " ");
удалит все символы Юникода, не являющиеся буквами и цифрами.
replaceAll
, и \p{..}
экранирование свойств широко не реализовано.
Вы пробовали, чтобы str = str.replace(/\W|_/g,'');
он вернул строку без какого-либо символа, и вы можете указать, есть ли какой-либо особый символ после полосы канала, |
чтобы их также поймать.
var str = "1324567890abc§$)% John Doe #$@'.replace(/\W|_/g, '');
он вернется str = 1324567890abcJohnDoe
или найдите цифры и буквы и замените их пустой строкой (""):
var str = "1324567890abc§$)% John Doe #$@".replace(/\w|_/g, '');
он вернется str = '§$)% #$@';
Чтобы сопоставить что-либо, кроме буквы, цифры или буквы с диакритическими знаками, например, é
вы можете попробовать следующее:
[^\wÀ-úÀ-ÿ]
И заменить:
var str = 'dfj,dsf7é@lfsd .sdklfàj1';
str = str.replace(/[^\wÀ-úÀ-ÿ]/g, '_');
По мотивам верхнего поста с поддержкой диакритических знаков
\w
предназначен для символов Word и в точности совпадает с[a-zA-Z0-9_]
(обратите внимание, что подчеркивание считается символом слова.) ... таким образом, сокращение будетstr.replace(/[^\w]/g, ' ')