мне нужно регулярное выражение, которое будет соответствовать 0
- 9
, (
, )
, +
, -
, *
и /
.Регулярное выражение для сравнения цифры и основные математические операторы
ответ
Похоже, вы пытаетесь сопоставить числовые выражения, например 5 + 7-3.
Это должно соответствовать им:
([-+]?[0-9]*\.?[0-9]+[\/\+\-\*])+([-+]?[0-9]*\.?[0-9]+)
Этот ответ не содержит скобки, упомянутые в вопросе. Что делать, если у вас есть операция (2 + 3) * (5/(7-1))? –
Кроме того, неверно сказано, что '25 * (53 + 5' является действительным, а' 2 * (3) 'is not. Если вы хотите попробовать и найти больше: https://jsfiddle.net/a7eg9a78/ – abluejelly
[0-9\(\)\+\-\*\./\"]
Я думаю, что вы ищете классы символов
[0-9()+\-*/.]
Это должно соответствовать слову, которое содержит любое число от 0 до 9 или (,), +, -,/или *
+ - * недопустимый диапазон, положите '-' в конец, и он должен работать – Inshallah
Я думаю, что '-' должен быть первым символом, например' [-0-9() + * /] ', no ? – Victor
Да, я думаю, что решение - это классы символов, но в ответ на иншаллах не следует просто избегать «-»? Я понимаю, что в зависимости от системы (которая не указана OP), такие символы, как, например, могут иметь особые значения, на самом деле могут * и скобки. Я думаю, что OP будет лучше всего читать любую документацию, имеющуюся в его конкретной системе регулярных выражений. – nullpointer
[\d\(\)\+\-\*\/\.]
Хе-хе, все сбежали +1. – Inshallah
Я не думаю, что вам нужно убежать (,), -, + и т. Д. В класс символов. Это зависит от lanaguage, не так ли? – Jaskirat
@ Jass, в Perl, по крайней мере, вы правы. Однако вам нужно позаботиться о том, чтобы вы либо избежали '/', либо записывали регулярное выражение, как m ~ [\ d() + */.-] ~. – Inshallah
Принятый ответ не может обрабатывать множество основных случаев. Это должно сделать работу:
^([-+]? ?(\d+|\(\g<1>\))(?[-+*\/] ?\g<1>)?)$
Explaination:
Мы хотим, чтобы соответствовать всей строке:
^...$
Выражения могут иметь знак:
[-+]? ?
Выражение состоит из нескольких цифр или другого действительного выражения, окруженного скобками:
(\d+|\(\g<1>\))
действительное выражение может сопровождаться операцией и другим действительным выражением и до сих пор является допустимым выражением:
(?[-+*\/] ?\g<1>)?
Если вам нужно регулярное выражение, чтобы соответствовать арифметическое выражение как это: 3 + 2 -24 * 2/2-1 вы можете попробовать это:
String reg1="([0-9]+[\\+\\-\\*\\/]{1}[0-9]+)+([\\+\\-\\*\\/]{1}[0-9]+)*";
вы можете добавить кронштейн, где вы хотите, если вы будете редактировать это регулярное выражение.
Я отметил вас Ответ был полезен, потому что это помогло мне в моей работе. Все выше сказанное мне не очень помогло. –
Это регулярное выражение помогает мне, просто возьмите записку здесь, возможно, это помогает другим.
^[0-9+\-*\/\(\)]*$
используя preg? EREG? Какой язык? Какая система? – ty812