Ищете регулярное выражение: мягкий дефис или не символ слова

Я ищу регулярное выражение для символов, которые не являются ни символами слов, ни мягким дефисом (U+00AD).

Это даст мне символы, которые не являются словами-символами:

((?=\W).)

Но как насчет мягкого дефиса? Что такое правильное регулярное выражение?

3 ответа

Решение

Вы можете сделать это:

[^\w\u00AD]

(НЕ слово или мягкий дефис)

Я создал быстрый и грязный last_symbol() функция:

function last_symbol(str) { 
    var result = str.match(/([^\w\u00AD])[\w\u00AD]*$/); 
    return (result == null) ? null : result[1]; }

last_symbol('hello')   // null
last_symbol('hell!')   // '!'
last_symbol('hell!o$') // '$'

Ты можешь использовать \u00AD чтобы соответствовать символу мягкого переноса Юникода, поэтому вы должны иметь возможность отрицать это выражение и комбинировать его с \W сопоставлять символы, которые не являются символом слова и не являются мягким дефисом.

[^\u00AD\w]+

Используйте регулярное выражение /\x{AD}/u соответствовать мягким дефисам в PHP!

Другие вопросы по тегам