首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Javascript中使用正则表达式匹配特殊符号

在Javascript中使用正则表达式匹配特殊符号
EN

Stack Overflow用户
提问于 2011-01-21 10:23:36
回答 3查看 712关注 0票数 1

我正在为一所学校开发一个web应用程序。他们有像course_nameclass_name这样的术语。将课程视为类的模板,这意味着类必须继承课程的大多数属性。

现在,class_name必须包含course_name。例如:如果course_name是"CSS“,那么class_name可以是"CSS 101”或“example CSS”。使用正则表达式可以很容易地检查这一点。我过去经常使用单词边界\b\b。

然而,我最近遇到了一个问题,用户输入"HTML (初学者)“作为course_name。\b作为字边界在这种情况下将不再用于在class_name中查找匹配项。有没有人能帮帮我?想到所有的可能性,我的大脑就会爆炸。解决方案应该涵盖大多数场景,如果不是全部的话。

-Mark

EN

回答 3

Stack Overflow用户

发布于 2011-01-21 10:40:03

代码语言:javascript
复制
var courses = "HTML (Beginner)".match(/\w+/g);//gives ["HTML", "Beginner"];
if (courses)//can be null if no word chars found
  for (var i = 0; i < courses.length; i++)
    //look for course[i] in your list of courses
票数 0
EN

Stack Overflow用户

发布于 2011-01-21 13:43:16

您可以使用“一个或多个空格”作为单词分隔符来提取单词,然后进行比较,对吗?

var课程= "HTML (初学者)“.match(/^\s+/g);//提供"HTML",”(初学者)“

票数 0
EN

Stack Overflow用户

发布于 2012-10-28 03:52:45

首先,您需要能够对课程名称进行正则表达式转义。我正在使用this question中的代码

代码语言:javascript
复制
course_name.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')

course_name中的第一个/最后一个字符可能不是单词字符时,为了模拟边界,请使用以下内容:

代码语言:javascript
复制
RegExp("(?:^|\\W)" + str + "(?:$|\\W)")

在开始时,我们检查字符串的开头或非单词字符,在结束时检查字符串的结尾或非单词字符。

把这些放在一起,我们有:

代码语言:javascript
复制
RegExp("(?:^|\\W)" + course_name.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') + "(?:$|\\W)")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4754818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档