【发布时间】:2019-05-07 00:27:03
【问题描述】:
我正在尝试找到一个正则表达式解决方案来检查字符串是否匹配所有条件 + / 正斜杠。
当前代码:
var specialChars = /^[a-zA-Z0-9!@#\$%\^\&*\)\(+=._-]+$/g;
如果字符串如下所示,则匹配 true:4!@#$。
但是,如果字符串如下所示,则不起作用:5/6/2019
这就是我实现此检查的方式,基本上我有一个接收长字符串的函数。而我正在尝试做的是提取跟踪 ID,然后从中创建一个链接。
我的测试用例也在演示中,日期测试是失败的,因为 linkCreator 函数最终链接到日期:
https://jsfiddle.net/cojuevp5/
var linkCreator = function(value) {
var strings = value.split(' ');
var aHref = '<a href="http://www.google.com/search?q=';
var targetBlank = '" target="_blank" style="text-decoration: underline">';
var trackingString = strings.reduce(function(prevVal, currVal, idx) {
var specialChars = /^[a-zA-Z0-9!@#\$%\^\&*\)\(+=._-]+$/g;
// Does val start with number and not contain special characters including /
var link = currVal.match(/^\d/) && !currVal.match(specialChars) ?
aHref + currVal + targetBlank + currVal + '</a>' :
currVal;
return idx == 0 ? link : prevVal + ' ' + link;
}, '');
console.log(trackingString);
}
const case1 = '434663008870'
const case2 = '4S4663008870'
const case3 = '4S4663008870 PS'
const case4 = 'SHD FX 462367757727 PS'
const case5 = 'SHD FX 429970755485, R'
const case6 = 'SHD HEADER TRACKING PS'
const case7 = 'N/A'
const case8 = 'AF SHD FX 462367757727 PS'
const case9 = '4/7/2019'
const case10 = '4!@#$%^&'
const value = case9
const link = linkCreator(value)
console.log(link)
【问题讨论】:
-
您无需在
[]中转义$、&、)和(。如果^在开头,则只需要转义即可。 -
@Barmar 哦,你的意思是在检查
specialChars吗?还是我的测试case10? -
在
specialChars。你在case10中没有逃避任何东西,那我为什么要告诉你不要呢? -
将
\$%\^\&*\)\(更改为$%^&*)( -
您接受的答案删除了所有不必要的反斜杠。
标签: javascript regex