Regex, чтобы разделить слово заглавной буквой - PullRequest
0 голосов
/ 22 апреля 2020

Не могли бы вы помочь с выражением регулярного выражения?

Скажем, если у меня есть слово backupIPAddress , мне нужно разделить его на резервный IP-адрес или hasVPN => имеет VPN или backupIpAddress => резервный IP-адрес

Я попробовал следующее выражение (? = \ P {Lu}) , но это не то, что мне нужно.

1 Ответ

0 голосов
/ 22 апреля 2020

Вы можете сделать это пошагово:

  1. Строчные буквы, затем прописные и строчные. Делайте это два раза подряд, на случай повторения. pIp => p Ip

  2. Прописные буквы, затем заглавные и строчные. PAd => P Ad

  3. Нижний регистр, за которым следует множество заглавных букв, за которыми следует граница слова. sVPN => s VPN, pIP => p IP

var splitCapitals = s =>
  s
  .replace(/([a-z])([A-Z][a-z])/g, "$1 $2")
  .replace(/([a-z])([A-Z][a-z])/g, "$1 $2")
  .replace(/([A-Z])([A-Z][a-z])/g, "$1 $2")
  .replace(/([a-z])([A-Z]+)\b/g, "$1 $2")
;
console.log(splitCapitals("hasVPN"));
console.log(splitCapitals("backupIpAddress"));
console.log(splitCapitals("backupIPAddress"));
...