0

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

例如以下是传入的模式

  • 测试
  • 测试123
  • 测试/

我需要帮助创建正则表达式匹配,所以 -
只有测试匹配,而不是 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]’

GET www.domain.com/test
匹配 test 并在 /test-videos.html
上返回 302 当请求再次到达服务器上的 /test-videos.html 时返回 302
test再次匹配,并返回 302 和 / test-videos.html-videos.html,
并在该请求上再次相同,因此它进入
/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

需要一个与 test 匹配的表达式的帮助,但没有任何后续。

4

2 回答 2

0

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

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

于 2018-04-01T04:16:23.543 回答
0

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

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

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)

于 2018-04-01T04:24:55.647 回答