Как сделать регулярное выражение в JavaScript для этой строки? - PullRequest
0 голосов
/ 06 августа 2010

У меня есть следующие возможные строки: «», или «4. », или «* .4», или «4.35» все вышеприведенные форматы действительны, остальные недействительны. в основном, если мне не нужны цифры или символы слова, это то, что я использовал в PHP для проверки:

        else if ( !ereg('^\*|.*\..*$',$bl_objver) )

Теперь я хотел бы добавить проверку на стороне клиента, поэтому я просто перевел ее на javascript:

    var ver_reg = new RegExp("^\*|.*\..*$");
    if (ver_reg.test(obj_ver) == false)

но firebug всегда показывает какую-то ошибку, например: «неверный квантификатор |. .. * $» и т. Д.

есть предложения?

1 Ответ

0 голосов
/ 06 августа 2010

(Я не уверен, что ваше выражение лица правильное, но пока что просто соответствует тому, что у вас есть.)

Используя объект RegExp, вам необходимо экранировать косую черту :

var ver_reg = new RegExp("^\\*|.*\\..*$");

В качестве альтернативы вы можете использовать регулярное выражение:

var ver_reg = /^\*|.*\..*$/;


Это отвечает на ваш прямой вопрос, но ...

Что касается выражения, то, что вы определенно хотите исправить - это якоря начала / конца, каждый из которых применяется к одной стороне чередования.

т.е. Вы говорите <this>|<that>, где <this> это ^\*, а <that> это .*\..*$

То, что вы хотите, это ^(?:<this>|<that>)$, чтобы гарантировать, что маркеры начала / конца не являются частью альтернатив (но используют ?:, поскольку мы не собираем группу).

Итак, /^(?:\*|.*\..*)$/, используя второй пример выше - это исправление также потребуется применить к версии PHP (которая может использовать тот же синтаксис).

Я бы также поставил под сомнение ваше использование . вместо \w или [^.] или аналогичного, но не зная, что вы на самом деле делаете, я не могу точно сказать, что имеет больше смысла. *

Надеюсь, это поможет! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...