2016-11-09 2 views
-1

Я хотел бы удалить все символы после последней буквы внутри строки. Например. это строка, которую я хотел бы изменить:Удалить все символы после последней буквы строки JS

var foo = "The quick brown fox jumps over the lazy dog | \ + ! ?"; 

То, что я хочу, чтобы отобразить это:

var foo = "The quick brown fox jumps over the lazy dog"; 

«г» является последней буквы, но я не хочу, чтобы жёстко я хочу, чтобы он работал, если есть какое-то письмо, которое находится на последней позиции.

Есть ли шаблон RegExp или плагин, который бы выполнил эту работу?

Спасибо!

ответ

0

спичек, что часть по:

[^A-Za-z]*$ 

и использовать нулевую строку в замене.

  • [^A-Za-z]* соответствует любому символу, кроме букв ноль или более раз в конце строки ($)

Demo

+0

Это работает как шарм, спасибо! – kneles90

+0

Эй, помощник, быстрый вопрос - как я могу изменить регулярное выражение «A-Za-z» как любой символ, кроме '|' - вертикальная полоса? – kneles90

+0

@ kneles90 do '[^ |] * $' – heemayl

0

Попробуйте это:

([A-Za-z])(?!.*[A-Za-z]).* 

и заменить

\1 

Explanation

  1. ([A-Za-Z]) соответствует азбуку
  2. (?!. * [A-Za-z]) посмотреть, не следует ли символу без алфавита
  3. если да, то фиксирует результат линии
0

This regex будет соответствовать от первого небуквенный характера с любого языка на "; и не будет включать их, чтобы сохранить строку неповрежденной.

[^\pL]*?(?=";) 

Затем просто замените пустую строку. Обратите внимание, что вам нужен флаг unicode u для работы любого языка. Если вам просто нужны символы ASCII, вы можете заменить \pL на a-zA-Z.

  • [^\pL] находит первый не письмо характер, \pL соответствует любой букве на любом языке
  • *? находит все следующих удобства буквенных символы
  • (?=";) является положительным опережением, который означает, что матч будет остановлен при следующих символах ";, когда строка закончилась.
+0

'[^ \ pL]' можно написать '\ PL'. – Toto

Смежные вопросы