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

在Javascript中使用正则表达式匹配特殊符号,javascript,regex,Javascript,Regex,我正在为一所学校开发一个web应用程序。它们有像课程名称和课程名称这样的术语。将课程视为类的模板,这意味着类必须继承课程的大多数属性 现在,class\u name必须包含course\u name。例如:如果课程名称是“CSS”,那么课程名称可以是“CSS 101”或“开始CSS”。使用正则表达式检查这一点很容易。我曾经使用单词边界\b\b 然而,我最近遇到了一个问题,用户键入了“HTML(初学者)”作为课程名称\在这种情况下,作为单词边界将不再适用于在类名中查找匹配项。有人能帮我吗?我的大脑

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

现在,
class\u name
必须包含
course\u name
。例如:如果课程名称是“CSS”,那么课程名称可以是“CSS 101”或“开始CSS”。使用正则表达式检查这一点很容易。我曾经使用单词边界\b\b

然而,我最近遇到了一个问题,用户键入了“HTML(初学者)”作为
课程名称
\在这种情况下,作为单词边界将不再适用于在
类名
中查找匹配项。有人能帮我吗?我的大脑在爆炸性地思考所有的可能性。解决方案应该涵盖大多数(如果不是全部的话)场景

-标记
var courses=“HTML(初学者)”.match(/\w+/g)//给出[“HTML”,“初学者”];
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
if(courses)//如果找不到单词字符,则可以为null 对于(变量i=0;i
您可以使用“一个或多个空格”作为单词分隔符来提取单词,然后进行比较,对吗


var courses=“HTML(初学者)”.match(/[^\s]+/g)//给出[“HTML”,“初学者”]

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

为了模拟
课程名称
中的第一个/最后一个字符可能不是单词字符时的边界,请使用以下命令:

RegExp("(?:^|\\W)" + str + "(?:$|\\W)")
在开头,我们检查字符串的开头或非单词字符,在结尾检查字符串的结尾或非单词字符

综合这些因素,我们有:

RegExp("(?:^|\\W)" + course_name.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') + "(?:$|\\W)")

就像我上面提到的。有课程名称和课程名称,课程名称必须绝对包含课程名称中的每个字符。执行/\w+/只会匹配单词。。。我的问题是:我如何将括号与单词匹配?也许我在最后一段中不清楚。在“HTML(初学者)”上使用单词边界,例如:new RegExp(“\\b”+课程名称+“\\b”)由于括号的原因不起作用。如果没有括号,那么正则表达式将是完美的。。。
RegExp("(?:^|\\W)" + course_name.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') + "(?:$|\\W)")