#javascript #jquery #html #regex
#javascript #jquery #HTML #регулярное выражение
Вопрос:
Я пишу плагин jQuery для замены пробелов или пробелов перед !
или ?
на a NARROW NO-BREAK SPACE
, как это принято во французском языке. Дело в том, что мне не удается заменить что-либо символом Unicode.
var text = $(this).text();
$(this).text(text.replace(/.?/g, 'u202F?'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Contrary to popular belief, Lorem Ipsum is not simply; random text ! It has roots in a piece. of classical Latin literature from 45 BC?</p>
Комментарии:
1. Ну, код, похоже, вообще не работает. Обратите внимание, что вы также можете заменить на
amp;#8239;
entity ..replace(/.?/g, 'amp;#8239;?')
2. В моем примере я хотел бы добавить узкий пробел без разрыва между C и ? в последнем предложении.
3. Затем попробуйте
.replace(/.(?=?)/g, '$amp;amp;#8239;')
4. Он отображает amp;#8239; в письме
5. Вы имеете в виду, установив мета-кодировку в UTF-8?
Ответ №1:
Рассматриваем только замену текста,
text.replace(/[ u202F]*([!?])/g, "u202F$1")
преобразует ноль или более символов пробела или узких неразрывных пробелов text
, за которыми следует ‘!’ или ‘?’, в один узкий неразрывный пробел, за которым следует соответствующий символ ‘!’ или ‘?’ (проверено в Firefox и IE).
[ u202F]
внутри регулярного выражения определяется набор символов для соответствия пробелам и включает в себя сам символ ограниченного неразрывного пробела. Это может быть расширено, чтобы включить определенные дополнительные символы пробела, такие как неразрывный пробел ( u00A0
), табуляции, или заменено на s
, чтобы соответствовать любым символам пробела, включая перевод строки.
Ответ №2:
Все пробелы и пробелы перед ?
будут заменены вашим NARROW NO-BREAK SPACE
var text = $('p').text();
$('p').text(text.replace(/s*?/g, 'u202F?'));
https://jsfiddle.net/tct4e73c/1/
Обновить
Добавлено !
var text = $('p').text();
$('p').text(text.replace(/.s*(?=!|?)/g, 'u202F'));