我有这个功能,读取条形码,然后检查代码格式,
componentDidMount() {
KeyEvent.onKeyDownListener((keyEvent: KeyEventProps) => {
if (keyEvent.keyCode === 61) {
// tab char end of code
const barcodeType = this.getBarcodeType(this.barcode);
if (barcodeType) {
this.props.barcodeSubject.next({barcode: this.barcode});
}
this.setState({barcode: this.barcode, barcodeType});
this.barcode = '';
return;
}
this.barcode += keyEvent.pressedKey;
});
}
getBarcodeType(input: string): Format | undefined {
const ean13Pattern = /^[0-9]{13}$/gm;
const ean8Pattern = /^[0-9]{8}$/;
const ean128Pattern = /^[(0-9A-Za-z)]+$/;
console.log(
'***',
input,
typeof input,
input.length,
input.match(ean13Pattern),
);
if (ean13Pattern.test(input)) {
return 'EAN';
} else if (ean8Pattern.test(input)) {
return 'EAN';
} else if (ean128Pattern.test(input)) {
return 'CODE128';
}
return undefined;
}
问题是正则表达式永远不匹配,当我匹配时
console.log(
'***',
input,
typeof input,
input.length,
input.match(ean13Pattern),
);
输出:
LOG *** 5449000214911 string 26 null
我的长度是26而不是13,有人能告诉我为什么吗?
1条答案
按热度按时间egdjgwm81#
我使用spread on string,然后我看到我的字符串包含许多不可打印的字符
来替换我用的隐形字符
我不知道这是不是一个好的解决办法,但对我来说是有效的。