2014-11-20 2 views
0

Мне нужно проверить, что строка JAVA, которую мы отправляем в commzgate (сторонняя сторона), как SMS, но наше SMS не удается, потому что наша строка содержит некоторые недопустимые/нечитаемые символы, которые мне нужно сначала проверить. В основном мне нужно поставить проверку регулярного выражения в java, чтобы проверить, содержит ли моя строка следующие символы или нет: -Как запретить эти символы € []^{| } ~ в строке java

€ [\]^{| } ~

Любые предложения! Более того, когда я пытаюсь помещать эти символы в свой java-файл, он не сохраняет и не предупреждает о не-utf8 символьном сообщении в eclipse, поэтому каждый раз мне нужно удалить € и сохранить. Это значит, что моя проверка не завершена. Спасибо

+4

['Java'! =' JavaScript'] (http://stackoverflow.com/a/245069/1393766), прочитайте описание тегов перед их использованием. – Pshemo

+2

Более безопасным было бы проверить, действителен ли символ, а не недействителен. Другими словами, проверьте, что это алфавит или номер или один из 30 символов, которые вы хотите разрешить –

ответ

1

Вы, кажется, включили ответ в свой вопрос - вы можете использовать регулярное выражение для проверки этих символов и замены или удаления их по мере необходимости. Когда вы сталкиваетесь с проблемой Eclipse на символе, отличном от UTF-8 (символ евро), вы можете использовать символ unicode U+20AC (который должен быть этим).

regular expression java

0

Регулярное выражение является /[€\[\]\{\}\~]/g можно сделать проще, но это один работает

Например, в Js

var a = "€[]{}^|~" 
var reg = /[€\[\]\{\}\~|^]/g 
a.replace(reg, "") //output "" 
+0

OP, вероятно, не означает javascript, вы можете обновить свой ответ. – brandonscript

0

Использование просто:

^[^€\\[\\]\\^{|}~\\\]*$ 
// € [ ] ^{|}~ \ < literals 

который соответствует начать d конец строки, любые символы (или none) при условии, что они не находятся в классе символов (экранированный). ^ внутри класса символов здесь указывает, что он должен не совпадение.

Обратите внимание на символы с двойным экранированием, потому что Java требует, чтобы и буквенные символы были экранированы.

Смежные вопросы