2016-05-11 3 views
0

Я что-то упустил в базовом синтаксисе регулярных выражений node.js?node.js распознает шаблоны символов, но не числовые шаблоны

Это не имеет значения, если я начну с^или заканчиваться $, что я пропавший без вести в синтаксисе регулярных выражений, чтобы получить эти выходы:

var Regex = require("regex"); 
//var Regex = require("regexp"); //performs the same with both 


var regex = new Regex(/(a|b)*abb/); 
console.log("The pattern matches: " + regex.test("abb")); // true 

//Match a decimal number in sqaure brackets 
var regex1 = new Regex(/\d/); 
console.log("The pattern matches: " + regex1.test("9")); 

var regex2 = new Regex(/^\d$/); 
console.log("The pattern matches: " + regex2.test("9")); 

var regex3 = new Regex(/^\d$/); 
console.log("The pattern matches: " + regex3.test("9")); 


var regex4 = new Regex(/^\[\d\.\d\]$/); 
console.log("The pattern matches: " + regex4.test("[9.9]")); 

var regex5 = new Regex(/^\[[0-9]\.[0-9]\]$/); 
console.log("The pattern matches: " +regex5.test("[9.9]")); 

выход:

C:\nodeapps\CSV IO>node regexTest.js 

    The pattern matches: true 

    The pattern matches: false 

    The pattern matches: false 

    The pattern matches: false 

    The pattern matches: false 

    The pattern matches: false 

Am I синтаксически не видя чего-то?

+0

основное регулярное выражение не нужно, чтобы вы 'требовать ("регулярное выражение")' – YOU

+1

Просто удалите все 'новый Regex (' ... ')'. Используйте простые регулярные выражения. 'var regex1 =/\ d /;' должен работать. –

+0

СОВЕТ: Ваш результат был бы более полезен, если бы он включал регулярное выражение и целевую строку, а также результат. Чтобы отсканировать резервную копию страницы, чтобы увидеть, какой тест мы смотрим, раздражает, и делает нас гораздо более вероятными, чтобы потерять интерес и перейти к другому вопросу. –

ответ

1

Нам не нужно требовать («регулярное выражение»); Просто удалите его и используйте. По умолчанию javascript RegExp он будет работать.

Modfied Кодекс

var regex = new RegExp(/(a|b)*abb/); 
console.log("The pattern matches: " + regex.test("abb")); // true 

//Match a decimal number in sqaure brackets 
var regex1 = new RegExp(/\d/); 
console.log("The pattern matches: " + regex1.test("9")); 

var regex2 = new RegExp(/^\d$/); 
console.log("The pattern matches: " + regex2.test("9")); 

var regex3 = new RegExp(/^\d$/); 
console.log("The pattern matches: " + regex3.test("9")); 


var regex4 = new RegExp(/^\[\d\.\d\]$/); 
console.log("The pattern matches: " + regex4.test("[9.9]")); 

var regex5 = new RegExp(/^\[[0-9]\.[0-9]\]$/); 
console.log("The pattern matches: " +regex5.test("[9.9]")); 
+0

Это может работать не так, как ожидалось, во всех браузерах, как я уже сказал, предпочтительна литеральная запись регулярного выражения, особенно когда шаблон регулярного выражения известен заранее (является статическим). –

+1

@ WiktorStribiżew Это не повлияет на его функциональность в браузерах. И согласно вашему требованию вы используете RegEx Tests на стороне сервера, независимо от браузера на стороне клиента. Так что это будет отлично работать в вашем случае. –

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