Я думав, що, наприклад, пропущу кожну букву в рядку foo
стає f o o
Я думаю, що таке "foo".replace(//g, " ");
( в г прапор заміняти кожен екземпляр, інакше я б не хотів регулярного вираження, чи б я :) )
У мене є лише одна незначна проблема ... у JavaScript, //
це коментар, тому він не працює.
Як це можна досягти набравши регекс-літерал (з косою рисою), або це неможливо, і я повинен був би створити (за набравши) об'єкт Regex?
Відповіді:
1 для відповіді № 1Є кілька способів зробити це. (Ці методи класифікуються від найкращої практики до гіршої. Я рекомендую перший, і я високо відбийте останні.)
Використовуйте split
/join
, що було б кращим методом із меншими витратами. Тут немає потреби в регулярному вираженні:
"foo".split("").join(" ");
Або скористайтеся RegExp
конструктор
"foo".replace(new RegExp("", "g"), " ");
Або додайте марну групу (не рекомендується, оскільки це незрозуміло на перший погляд):
"foo".replace(/()/g, " ");
Ще один коментар, заснований на вашому останньому абзаці:
Як я можу досягти цього за допомогою прямого регексу, чи це неможливо, і мені доведеться створити об'єкт Regex?
Вони буквально те саме:
"використання літералу регулярного вираження ... або ... об'єкт Regex" не має сенсу, тому що літеральний регулярний вираз є a RegExp
об'єкт
2 для відповіді № 2
Спробуйте скористатися цим регулярним виразом:
/.(?!$)/g
Ви можете прочитати це як: "Знайдіть усі діаграми, крім останньої".
Опис
Зразок коду
"foo".replace(/.(?!$)/g, "$& ");
Демонстрація
0 для відповіді № 3
Ви можете скористатись B
(все, крім межі слова)
"foo".replace(/B/g," ");
або якщо ви хочете замінити в кожному місці
"foo".replace(/B|b/g," ");