2016-11-11 3 views
1

Я очень медленно изучаю Javascript и испытываю трудности с выполнением совпадений циклов for.Для совпадений регулярных выражений в Javascript

Я работаю в express.js установки, следующее в моей index.js

var express = require('express'); 

var router = express.Router(); 

// the text block against which I am running the regex 

var para = "We have insisted on strict scrutiny in every context, even for so-called “benign” racial classifications, such as race-conscious university admissions policies, see Grutter v. Bollinger, 539 U.S. 306, 326 (2003), race-based preferences in government contracts, see Adarand, supra, at 226, and race-based districting intended to improve minority representation, see Shaw v. Reno, 509 U.S. 630, 650 (1993). Daniel added the following test case to the string: Crawford v. Washington, 123 U.S. 123, 123 (2016)." 

// regex 

var regex = /(\w+\sv.\s\w+,\s\d*\s?[\w.]*[\d,\s]*\(\d{4}\))/ig; 
var regexTwo = /\w+\s/ig; 

// Store the matches 

var matches = para.match(regex); 
var matchesTwo = para.match(regexTwo); 

// the offending loop 

for (var i = 0; i < matches.length; i += 1) { 

    router.get('/', function(req, res) { 

     res.render('index', { matches, matchesTwo, i }) }); 

}; 

module.exports = router; 

Я использую Jade для HTML и мой index.jade файл выглядит следующим образом:

extends layout 

block content 

    body 
     h1 CaseSpy 
     p I found the following U.S. cases in the text you provided me with: 
     ul 
      li #{matches} 

     p I found the following other terms in the text you provided me with: 
     ul 
      li #{matchesTwo} 

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

Выход

я нашел следующие случаи США в тексте вы предоставил мне:...

  • Grutter v Bollinger, 539 US 306, 326 (2003), Шоу v Рено, 509 США 630, 650 (1993), Кроуфорд v Вашингтон, 123 US 123, 123 (2016)

Выход я ищу это:

Желаемая Выход

я нашел следующие случаи США в текст, который вы предоставили мне:.

  • Grutter v Bollinger, 539 US 306, 326 (2003)
  • Шоу v. Рено, 509 US 630, 650 (1993)
  • Кроуфорд v. Вашингтон, 123 US 123, 123 (2016)

Я возился с for петли без конца и пытались такого рода метод, но держать ошибки ударяя: Я просто не могу показаться, чтобы взломать этот

for (var i = 0; i < matches.length; i += 1) { 
    document.body.innerHTML += matches[i] + '<br>'; 
} 

. Я знаю, что делаю что-то принципиально неправильно, я просто не знаю, что.

Большое спасибо.

+0

вы можете разместить свою ошибку ?? – youssouf

ответ

1

Как сказал Мигель, я считаю, что проблема может быть больше с вашим Jade-кодом, чем с JavaScript. Вы пытаетесь поставить все совпадения внутри одного li так: li #{matches}.

Что делать, если вы пытаетесь что-то вроде этого:

ul 
each item in matches 
    li= item 
+1

Это сделало трюк! Большое спасибо вам всем – DanielH

2

не очень знаком с Джейд, но похоже, что вы не распаковываете {matches}. Это может помочь: https://pugjs.org/language/iteration.html [Из того, что я могу сказать, Джейд был переименован в Мопс?]

+0

«Джейд переименовали в Пагу?» Да. – undefined

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