Проблема с регулярным выражением в Javascript - PullRequest
0 голосов
/ 29 июня 2011

Я пытаюсь найти соответствие, только когда все разделенные пробелами слова длиннее 3-х слов (3 слова обязательны, abc * - это правильно, а ab * - нет).Это мой тест:

<html>
        <body>
                <script>
                var re = /(?!(\W|^)\w{0,2}(\W|$)).*/i;
                var texts = new Array("ab","ab*","abc de*", "ab* def");
                for (textindex in texts)
                {
                        var text = texts[textindex];
                        var matched = re.test(text);
                        document.write(matched + "<br/>")
                }
                </script>
        </body>
</html>

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

1 Ответ

3 голосов
/ 29 июня 2011

Простое регулярное выражение для проверки:

/^(\s?\S{3,})+$/

Что касается того, почему ваше регулярное выражение не работает, ваш негативный прогноз просто означает «этого не существует в данный момент», поэтому независимо от того, что вы введете, вы получите совпадение на конец строки как минимум.

...