正则字符串上的正则表达式匹配 - 进入循环

时间:2018-04-01 04:07:22

标签: javascript html regex regex-greedy connect-modrewrite

在解决这个正则表达式问题方面需要帮助,我被困住了,无法解决。我正在使用nodejs 6.10

例如以下是传入模式

  • 测试
  • test123
  • 测试/

我需要帮助创建一个正则表达式匹配所以 -
- 仅匹配测试不是test123或test /
- 对于test123,它不应在测试时预匹配

目前我正在使用以下规则进行重定向

‘^/test /test-videos.html [R=302,L]’  
'^/test/ /test/videos.html [R=302,L]’  
'^/test123 /test/test-videos.html [R=302,L]’

获取www.domain.com/test
它与/test-videos.html上的测试和返回302匹配 在302上,当请求在服务器上再次到达/test-videos.html时 再次匹配测试,并使用/test-videos.html-videos.html返回302, 并且在该请求上再次相同,因此它进入一个无休止的循环 /test-videos.html-videos.html-videos.html
/test-videos.html-videos.html-videos.html-videos.html-videos.html-videos.html-videos.html-videos.html-videos.html

需要有关匹配表达式的帮助 在没有成功的情况下进行测试。

2 个答案:

答案 0 :(得分:0)

您可以使用$来匹配字符串的结尾,例如'^测试$'

查看http://regular-expressions.mobi/anchors.html?wlr=1

答案 1 :(得分:0)

你快到了。您有^用于匹配字符串的开头。您只需在$之后添加test以匹配输入的结尾。来自MDN的正则表达式指南:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#special-dollar

  

$匹配输入结束。如果multiline标志设置为true,则也会在换行符之前立即匹配。例如,/ t $ /与“eater”中的't'不匹配,但在“eat”中匹配它。

const testRegex = /^test$/;

const justTest = testRegex.test('test');
const trailingSlash = testRegex.test('test/');
const numbers = testRegex.test('test123');

console.log('match test', justTest)
console.log('trailing slash', trailingSlash)
console.log('numbers', numbers)