繁体   English   中英

如何使用 javascript 中的 split 函数拆分值以只检查第一次和最后一次出现

[英]How do I split a value using the split function from javascript to split checking only the first and last occurence

所以我需要拆分来自我的数据库的正则表达式。 该值如下所示

regexValue = '/^([0-9]{3}\.?[0-9]{3}\.?[0-9]{3}\-?[0-9]{2}|[0-9]{2}\.?[0-9]{3}\.?[0-9]{3}\/?[0-9]{4}\-?[0-9]{2})$/ig'

如果你彻底分析这个正则表达式,你会发现它在正则表达式之间有一个正斜杠“/”。 所以如果我想拆分它,使用

values.split('/'); 

它会生成比我想要的更多的字符串。 例如一个简单的正则表达式

//would generate three values("", \w+ , ig)    
regexValue = '/\w+/ig'
regexValue.split('/');

有没有办法让我只能分开获取第一个和最后一个值?

如果您想将该字符串拆分为正则表达式主体及其标志,您可以使用...一个正则表达式轻松完成。 😃

const parts = /^\s*\/(.*)\/(?:([a-z]*))\s*$/.exec(regexString);
//           A ^
//           B  ^^^
//           C     ^^
//           D       ^^^^
//           E           ^^
//           F             ^^^^^^^^^^^^
//           G                         ^^^
//           H                            ^
  • A:输入开始
  • B: 可选的空格
  • C:正则表达式“文字”的前导斜线
  • D:表达式的主体
  • E:正则表达式“文字”的结尾斜线
  • F:可选标志
  • G:可选空格
  • H:输入结束

现场示例:

 const regexString = '/^([0-9]{3}\\\\.?[0-9]{3}\\\\.?[0-9]{3}\\\\-?[0-9]{2}|[0-9]{2}\\\\.?[0-9]{3}\\\\.?[0-9]{3}\\\\/?[0-9]{4}\\\\-?[0-9]{2})$/ig'; const parts = /^\\s*\\/(.*)\\/(?:([az]*))\\s*$/.exec(regexString); if (!parts) { console.log("No match"); } else { const [, body, flags] = parts; console.log(`body: ${body}`); console.log(`flags: ${flags}`); }


请注意,我对字符串文字中的反斜杠进行了转义,因为您说您是从数据库中读取的,所以您的代码中没有将其包含在字符串文字中。 只是在字符串文字中,反斜杠是转义字符,所以\\. . 意思完全一样。 要编写定义带有反斜杠的字符串的字符串文字,您必须像我在上面的代码片段中所做的那样对它们进行转义。 同样,你已经说过它来自你的数据库,所以你很好,但我想我应该在例子中避开它们以避免误导。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM