浏览器自动填充和正则表达式

时间:2018-03-13 13:21:19

标签: javascript regex

我需要更好的帮助:) 我有一个输入字段,输入我的金额。我收到了价值(这样的字符串' 111,00')并且我执行了以下操作:

const newVal = value.Amount.toString().replace(/\s/, '').replace(/,/g, '.');

然后我使用自定义validatorjs

Validator.register('checkSum', value => /^(\d+[.,]|\d*[1-9])\d*$/.test(value));

如果数字为零,则响应将为true,否则为false。 但是,如果我想从自动填充我的Chrome浏览器(例如111,00)传递金额,我有一个错误(金额可以为零):(我试图用replace(/\s+/g, '')解决这个问题,但没有发生了,我有同样的问题......我做错了什么?我该如何解决这个问题呢?

非常感谢任何帮助!

编辑:

onInputChange: (_, v) => this.handleChange({ Amount: v }),

然后

handleChange(value) {
    const { name } = this.props;
    let onlyAmount;
    if (value.Amount) {
        this.hasComma = value.Amount.toString().indexOf(',') !== -1;
        const newVal = value.Amount.replace(/,/g, '.');
        if (newVal.split('.')[0].length > '9') {
            return false;
        }
        onlyAmount = {
            Amount: newVal,
        };
    }
    this.props.onChange(name, value.Amount ? onlyAmount : value);
}

在componentDidMount

this.formValidations.addValidate(`${name}.Amount`, 'checkSum', 'Sum can't be 0');

1 个答案:

答案 0 :(得分:0)

我发现昨天有问题。铬根本不添加空间。

.replace(/[\u2060]/g, '')

它解决了我的问题。