Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式匹配字符串的最后一部分_Javascript_Regex - Fatal编程技术网

Javascript 正则表达式匹配字符串的最后一部分

Javascript 正则表达式匹配字符串的最后一部分,javascript,regex,Javascript,Regex,我想通过'onclick'事件动态添加CSS引用,并过滤具有不同名称但都以'a'结尾的服务器CSS引用,我的计划是使用Regex if (cssRef != /.*a.css$/){ then add the css reference } 这不起作用,谢谢你的时间。这样不行。您需要调用方法: if (!(/.*a\.css$/).test(cssRef)) { ... } 这样不行。您需要调用方法: if (!(/.*a\.css$/).test(cssRef)) { ... } 您

我想通过'onclick'事件动态添加CSS引用,并过滤具有不同名称但都以'a'结尾的服务器CSS引用,我的计划是使用Regex

if (cssRef != /.*a.css$/){
  then add the css reference
}

这不起作用,谢谢你的时间。

这样不行。您需要调用方法:

if (!(/.*a\.css$/).test(cssRef)) { ... }

这样不行。您需要调用方法:

if (!(/.*a\.css$/).test(cssRef)) { ... }

您可以使用否定的先行断言

if (/^(?!.*a\.css$)/.test(cssRef)) { ... }

您可以使用否定的先行断言

if (/^(?!.*a\.css$)/.test(cssRef)) { ... }

如果您想确保没有文件名
a.css
,那么您当前的模式是不够的。如果不使用正则表达式,请使用常规字符串操作:

// split the HREF on slashes. If there are no slashes, this will
// be an array with just the filename in position [0].
var terms = cssRef.split('/');

// get the last element in that array, which will be the filename:
var last = terms.slice(-1)[0];

// is that filename not "a.css"? Excellent, do stuff here.
if (last.toLowerCase() !== "a.css") {
  // we know this isn't a file called a.css
}

不需要通过强制正则表达式使事情变得不必要的复杂。通过这种方式,我们甚至能够确保我们考虑到这个奇怪的案例,以防你的一个同事或任何决定以“A.CSS”或其他方式链接到它的人。因为你永远不知道。

如果你想确保没有文件名
a.css
,那么你当前的模式是不够的。如果不使用正则表达式,请使用常规字符串操作:

// split the HREF on slashes. If there are no slashes, this will
// be an array with just the filename in position [0].
var terms = cssRef.split('/');

// get the last element in that array, which will be the filename:
var last = terms.slice(-1)[0];

// is that filename not "a.css"? Excellent, do stuff here.
if (last.toLowerCase() !== "a.css") {
  // we know this isn't a file called a.css
}

不需要通过强制正则表达式使事情变得不必要的复杂。通过这种方式,我们甚至能够确保我们考虑到这个奇怪的案例,以防你的一个同事或任何决定以“A.CSS”或其他方式链接到它的人。因为你永远不知道。

功能性问题:你想做什么让你觉得你需要正则表达式?例如,如果您使用的是node.js,那么当您可以使用
glob
模式时,为什么还要使用regex呢?因为这是最简单的方法?我只是一个新手,我不知道有太多的方法,甚至不知道所有的纯js部分。因此,如果我问错了问题,我很抱歉。无意冒犯:这可能是正确的问题,但我们无法知道,这听起来很像你在问一个问题,所以我想确定我们知道你实际上在做什么,你认为你需要正则表达式,以防有更好的方法来做。例如,如果您需要使用node.js为监视任务匹配文件,则regex通常不是正确的想法。最好的答案是解决您的问题,而不是实现您的问题解决方案。Thnx,但我对node一无所知,只知道它很有名。我只是在做一个模型,这样我就可以应用几个主题。所以我想在其他html文件中检索css引用。是的,这很奇怪,但是整个公司都是一个假冒的应用程序制造商,他们根本不关心MVC之类的东西,我无法修复整个系统。另外,我不知道主题的原理,比如wordpress主题,它们是如何工作的,原理是什么,我不知道,所以我只是做一个模型并应用css参考。但是他们共享a.css作为公共的,所以我需要去掉它。在这种情况下,你需要添加更多的信息。例如,“公共css文件名始终是a.css,可能在不同的URL中”是什么意思?(没有理由让同名文件成为同一个文件,所以我们如何知道它是同一个文件?我们必须实际检查文件的内容以确保正确)。另外,您是否可以显示更多代码来解释
cssRef
来自何处,以及如何搜索预先存在的、已加载的样式表?功能性问题:您试图做什么使您认为您需要regex?例如,如果您使用的是node.js,那么当您可以使用
glob
模式时,为什么还要使用regex呢?因为这是最简单的方法?我只是一个新手,我不知道有太多的方法,甚至不知道所有的纯js部分。因此,如果我问错了问题,我很抱歉。无意冒犯:这可能是正确的问题,但我们无法知道,这听起来很像你在问一个问题,所以我想确定我们知道你实际上在做什么,你认为你需要正则表达式,以防有更好的方法来做。例如,如果您需要使用node.js为监视任务匹配文件,则regex通常不是正确的想法。最好的答案是解决您的问题,而不是实现您的问题解决方案。Thnx,但我对node一无所知,只知道它很有名。我只是在做一个模型,这样我就可以应用几个主题。所以我想在其他html文件中检索css引用。是的,这很奇怪,但是整个公司都是一个假冒的应用程序制造商,他们根本不关心MVC之类的东西,我无法修复整个系统。另外,我不知道主题的原理,比如wordpress主题,它们是如何工作的,原理是什么,我不知道,所以我只是做一个模型并应用css参考。但是他们共享a.css作为公共的,所以我需要去掉它。在这种情况下,你需要添加更多的信息。例如,“公共css文件名始终是a.css,可能在不同的URL中”是什么意思?(没有理由让同名文件成为同一个文件,所以我们如何知道它是同一个文件?我们必须实际检查文件的内容以确保正确)。另外,您是否可以显示更多代码来解释
cssRef
的来源,以及如何搜索预先存在的、已加载的样式表?请小心使用未替换的点。小心使用未替换的点。感谢您的耐心和指导。这样好多了。顺便说一句,你能告诉我为什么正则表达式不够,或者仅仅是我的模式吗?
a.css
之前可能出现的字符串,特别是考虑到我们想要实现的是string.split的一个示例(我们只需要“路径中的文件名”),正则表达式将很笨重,因此很难为您阅读,对于以后需要维护您的代码的人。始终先使用“可以理解”,然后在必要时进行优化:有了这段代码,您所做的事情就一目了然了。使用正则表达式时,情况并非如此,您会遇到不同大小写、备选URL模式等问题。维护起来要困难得多。感谢您的耐心和指导。这样好多了。顺便说一句,你能告诉我吗