【问题标题】:How to check for Forward Slash within this Regex for all special characters?如何在此正则表达式中检查所有特殊字符的正斜杠?
【发布时间】: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)

【问题讨论】:

  • 您无需在[] 中转义$&amp;)(。如果^ 在开头,则只需要转义即可。
  • @Barmar 哦,你的意思是在检查specialChars 吗?还是我的测试case10
  • specialChars。你在case10 中没有逃避任何东西,那我为什么要告诉你不要呢?
  • \$%\^\&amp;*\)\( 更改为$%^&amp;*)(
  • 您接受的答案删除了所有不必要的反斜杠。

标签: javascript regex


【解决方案1】:

您可能想要添加\/,这可能会解决您的问题:

^([A-z0-9!\/@#$%^&*)(+=._-]+)$

就像Barmar 所说,您不需要转义[] 中的所有字符:

我猜这可能是您想要匹配的内容:

您可以只使用this tool 并设计您想要的任何表达式。

图表

此图显示了您的表达方式:

【讨论】:

  • 啊,谢谢!这帮助我指出了我需要查看的位置,但这是有效的实际语法:/^[a-zA-Z0-9!@#\$%\^\&amp;*\)\/\(+=._-]+$/g 需要在 )( 之间添加 \/\
  • 我也刚刚发现了这个又好又短的好东西 :) var specialChars = /\W|_/g;
猜你喜欢
  • 2020-03-25
  • 2016-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多