我正在为一所学校开发一个web应用程序。他们有像course_name和class_name这样的术语。将课程视为类的模板,这意味着类必须继承课程的大多数属性。
现在,class_name必须包含course_name。例如:如果course_name是"CSS“,那么class_name可以是"CSS 101”或“example CSS”。使用正则表达式可以很容易地检查这一点。我过去经常使用单词边界\b\b。
然而,我最近遇到了一个问题,用户输入"HTML (初学者)“作为course_name。\b作为字边界在这种情况下将不再用于在class_name中查找匹配项。有没有人能帮帮我?想到所有的可能性,我的大脑就会爆炸。解决方案应该涵盖大多数场景,如果不是全部的话。
-Mark
发布于 2011-01-21 10:40:03
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发布于 2011-01-21 13:43:16
您可以使用“一个或多个空格”作为单词分隔符来提取单词,然后进行比较,对吗?
var课程= "HTML (初学者)“.match(/^\s+/g);//提供"HTML",”(初学者)“
发布于 2012-10-28 03:52:45
首先,您需要能够对课程名称进行正则表达式转义。我正在使用this question中的代码
course_name.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')当course_name中的第一个/最后一个字符可能不是单词字符时,为了模拟边界,请使用以下内容:
RegExp("(?:^|\\W)" + str + "(?:$|\\W)")在开始时,我们检查字符串的开头或非单词字符,在结束时检查字符串的结尾或非单词字符。
把这些放在一起,我们有:
RegExp("(?:^|\\W)" + course_name.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') + "(?:$|\\W)")https://stackoverflow.com/questions/4754818
复制相似问题