假设我有这样的刺痛:ABC5DEF / G或它可能是ABC5DEF-15,甚至只是ABC5DEF,它可能更短AB7F,或AB7FG / H.
我需要创建一个包含子字符串的javascript变量,直到' /'或者' - '。我真的想用一组值来打破。我想也许可以尝试这样的事情。
{{1}}
但是这会返回一个错误:ReferenceError:找不到变量:array
我怀疑我是否错误地定义了我的阵列,但尝试了其他一些我不再成功的事情。
我做错了什么?
答案 0 :(得分:1)
数组的定义不像JavaScript那样,定义它的最简单方法是:
var srcMark = ['/','-'];
此外,test
是一个函数,因此必须这样调用:
whereAt = new RegExp(srcMark.join('|')).test(str);
请注意,test
实际上并不会告诉您,正如您的变量所暗示的那样,它将返回true或false。如果要查找字符的位置,请使用String.prototype.search:
str.search(new RegExp(srcMark.join('|'));
希望有所帮助。
答案 1 :(得分:1)
您需要使用拆分方法:
var srcMark = Array.join(['-','/'],'|'); // "-|/" or
var regEx = new RegExp(srcMark,'g'); // /-|\//g
var substring = "222-22".split(regEx)[0] // "222"
"ABC5DEF/G".split(regEx)[0] // "ABC5DEF"
答案 2 :(得分:1)
从我的问题中可以理解的是,在/[/-]/
函数中使用此RegExp split()
将起作用。
修改强>:
要将字符串拆分为所有特殊字符,您可以在new RegExp(/[^a-zA-Z0-9]/)
函数中使用split()
。
var arr = "ABC5DEF/G";
var ans = arr.split(/[/-]/);
console.log(ans[0]);
arr = "ABC5DEF-15";
ans = arr.split(/[/-]/);
console.log(ans[0]);
// For all special characters
arr = "AB7FG/H";
ans = arr.split(new RegExp(/[^a-zA-Z0-9]/));
console.log(ans[0]);
答案 3 :(得分:0)
如果您想要特殊字符(非字母数字)的位置,您可以使用与基本拉丁字母表中不是单词字符的任何字符匹配的Regular Expression。相当于[^ A-Za-z0-9_],即: \W
var pattern = /\W/;
var text = 'ABC5DEF/G';
var match = pattern.exec(text);
var position = match.index;
console.log('character: ', match[0]);
console.log('position: ', position);

答案 4 :(得分:0)
您可以将{regex与String.split
一起使用。
它看起来像这样:
var result = ['ABC5DEF/G',
'ABC5DEF-15',
'ABC5DEF',
'AB7F',
'AB7FG/H'
].map((item) => item.split(/\W+/));
console.log(result);
这将创建一个包含字符串所有部分的数组,因此每个项目[0]将包含文本,直到/
或-
或没有。