RegExp Проверить текст SMS - PullRequest
       15

RegExp Проверить текст SMS

3 голосов
/ 03 марта 2011

Как мне написать RegExp для проверки SMS Текст только символ клавиатуры (abc, ABC, 123, ~! @ # $% ^ & * () `[] {} |; ':',. / <>?)

Спасибо ...

Ответы [ 4 ]

8 голосов
/ 08 марта 2011

Набор символов GSM по умолчанию определен в GSM 03.38 . Предполагая, что вы смотрите на декодированный текст, а не на 7-битный упакованный формат, который действительно используется, регулярное выражение, подобное следующему, должно ограничить вас допустимыми символами

"@£$¥èéùìòÇ\fØø\nÅåΔ_ΦΓΛΩΠΨΣΘΞÆæßÉ !\"#¤%&'()*+,-./[0-9]:;<=>\?¡[A-Z]ÄÖÑܧ¿[a-z]äöñüà\^\{\}\[~\]\|€"

Обратите внимание, что можно отправлять сообщения Unicode UCS-2, и в этот момент трубка, получающая сообщение, должна иметь подходящие символы для представления пользователю, сам Unicode не является ограничивающим фактором.

4 голосов
/ 03 марта 2011

Я предлагаю сделать это вручную.

Вам просто нужно позаботиться о некоторых исключениях, таких как [ ] (необходимо экранировать) обратная цитата и цитата в зависимости от языка, на котором вы пишете(поскольку он завершает строку шаблона)

^[a-zA-Z0-9~!@#$%^&*()`\[\]{};':,./<>?| ]*$

Возможно, это потребует небольшой настройки.Я уверен, что - и _ принимаются в текстовых сообщениях SMS.

1 голос
/ 06 сентября 2013

Я знаю, что немного опоздал на вечеринку, но я боролся с этим. Я недавно наткнулся на проект с открытым исходным кодом Twitter:

https://github.com/twitter/cloudhopper-commons-charset

Обеспечивает отличный способ очистки строк перед их отправкой на основе кодировок. Он также поддерживает кодирование строки в байтах на основе кодировки, удобной для SMS. Вот мой пример очистки существующей строки перед отправкой через SMS с использованием их библиотек:

public static String cleanSMS(String msg) {
    Charset charset = CharsetUtil.map(CharsetUtil.NAME_GSM7);
    StringBuilder cleaned  = new StringBuilder(msg);
    log.info("Accent chars replaced: " + MobileTextUtil.replaceAccentedChars(cleaned));
    log.info("Safe chars replaced: " + MobileTextUtil.replaceSafeUnicodeChars(cleaned));
    return CharsetUtil.normalize(cleaned.toString(), charset);
}
1 голос
/ 19 июля 2013

Я много искал, но, думаю, лучший.

function CharecterControl(input) {
    var str = /[^A-Za-z0-9 \\r\\n@£$¥èéùìòÇØøÅå\u0394_\u03A6\u0393\u0027\u0022\u039B\u03A9\u03A0\u03A8\u03A3\u0398\u039EÆæßÉ!\#$%&amp;()*+,\\./\-:;&lt;=&gt;?¡ÄÖÑܧ¿äöñüà^{}\\\\\\[~\\]|\u20AC]*/; 
    return !new RegExp(str).test(input);       
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...