Вы должны использовать регулярное выражение, чтобы соответствовать всем специальным символам одновременно.Под «специальным» я предполагаю, что вы имеете в виду «без букв».
var pattern = /([^ a-z]?)[a-z]+/gi; // Pattern
var str = "my name is john#doe oh.yeh"; // Input string
var strArr = [], match; // output array, temporary var
while ((match = pattern.exec(str)) !== null) { // <-- For each match
strArr.push( (match[1]?'&':'') + match[0]); // <-- Add to array
}
// strArr is now:
// strArr = ['my', 'name', 'is', 'john', '&#doe', 'oh', '&.yeh']
Он не соответствует последовательным специальным символам.Шаблон должен быть изменен для этого.Например, если вы хотите включить все последовательные символы, используйте ([^ a-z]+?)
.
Кроме того, в нем нет ничего, кроме последнего специального символа.Если вы хотите включить и этот, используйте [a-z]*
и удалите !== null
.