Javascript 匹配并测试将 null 返回到 DOI 正则表达式
Javascript match and test returning null to DOI Regex expression
我一直在努力寻找一种方法来识别输入表单上的 DOI 以触发特定搜索。
我找到了一个 DOI 正则表达式 here and when I use it with Match or Test 我得到了 'NULL' 和错误结果
function checkDOI(string){
//Redundant. I know
var testKey = String(string);
var DOIpattern = '\b(10[.][0-9]{4,}(?:[.][0-9]+)*/(?:(?!["&\'<>])\S)+)\b';
var found = DOIpattern.test(testKey);
console.log("found", found + " DOI "+ testKey);
return found
}
checkDOI("10.1016.12.31/nature.S0735-1097(98)2000/12/31/34:7-7")
我遇到了这个错误DOIpattern.test is not a function
然后如果我将 found.test 更改为 MATCH var found = DOIpattern.match(testKey);
结果为NULL
有人能告诉我我做错了什么吗?
提前致谢!
test
是 RegExp
class 而不是 String
的方法。要更正,请使用构造函数创建一个 RegExp 对象并对其调用 test
方法。
function checkDOI(string) {
//Redundant. I know
var testKey = String(string);
var DOIpattern = '\b(10[.][0-9]{4,}(?:[.][0-9]+)*/(?:(?!["&\'<>])\S)+)\b';
var found = new RegExp(DOIpattern).test(testKey);
console.log("found", found + " DOI " + testKey);
return found
}
checkDOI("10.1016.12.31/nature.S0735-1097(98)2000/12/31/34:7-7")
只要您的 RegExp 字符串正确,输入就应该匹配。
create a RegExp object using the constructor and call the test method on it.
谢谢!你的回应有效。以防万一其他人正在寻找正则表达式,我使用的正则表达式写得不正确,所以我把它剪成这个
\b(10[.][0-9]{4,}(?:[.][0-9]+)*\b/g
最终版本是这样的:
checkDOI(string){
var DOIpattern = new RegExp(/\b(10[.][0-9]{4,}(?:[.][0-9]+)*)\b/g);
// var DOIpattern = ;
var found = DOIpattern.test(testKey);
console.log("found", found + " DOI "+ testKey);
return found
}
我一直在努力寻找一种方法来识别输入表单上的 DOI 以触发特定搜索。 我找到了一个 DOI 正则表达式 here and when I use it with Match or Test 我得到了 'NULL' 和错误结果
function checkDOI(string){
//Redundant. I know
var testKey = String(string);
var DOIpattern = '\b(10[.][0-9]{4,}(?:[.][0-9]+)*/(?:(?!["&\'<>])\S)+)\b';
var found = DOIpattern.test(testKey);
console.log("found", found + " DOI "+ testKey);
return found
}
checkDOI("10.1016.12.31/nature.S0735-1097(98)2000/12/31/34:7-7")
我遇到了这个错误DOIpattern.test is not a function
然后如果我将 found.test 更改为 MATCH var found = DOIpattern.match(testKey);
结果为NULL
有人能告诉我我做错了什么吗?
提前致谢!
test
是 RegExp
class 而不是 String
的方法。要更正,请使用构造函数创建一个 RegExp 对象并对其调用 test
方法。
function checkDOI(string) {
//Redundant. I know
var testKey = String(string);
var DOIpattern = '\b(10[.][0-9]{4,}(?:[.][0-9]+)*/(?:(?!["&\'<>])\S)+)\b';
var found = new RegExp(DOIpattern).test(testKey);
console.log("found", found + " DOI " + testKey);
return found
}
checkDOI("10.1016.12.31/nature.S0735-1097(98)2000/12/31/34:7-7")
只要您的 RegExp 字符串正确,输入就应该匹配。
create a RegExp object using the constructor and call the test method on it.
谢谢!你的回应有效。以防万一其他人正在寻找正则表达式,我使用的正则表达式写得不正确,所以我把它剪成这个
\b(10[.][0-9]{4,}(?:[.][0-9]+)*\b/g
最终版本是这样的:
checkDOI(string){
var DOIpattern = new RegExp(/\b(10[.][0-9]{4,}(?:[.][0-9]+)*)\b/g);
// var DOIpattern = ;
var found = DOIpattern.test(testKey);
console.log("found", found + " DOI "+ testKey);
return found
}